我有两份名单-
List<String> List1;
List<File> List2;内容如下-
List1 List2
----- -----
String ID FileName LastWrite
tttaaaajk34j34 1 aaa 01-02-2019
oooccc 2 bbb 14-09-2018
ddd 3 ccc 23-06-2019
ttt 4 ddd 15-10-2016
aaa2832kajj 5 eee 20-08-2012我希望将List1与List2进行比较,并从List2中删除在List1中找到的项。
结果-
List2
----
ID FileName
2 bbb
4 ddd
5 eee我的代码-
List1.Where(f => !List1.Any(str => str.FileName.Contains(List2)))问题-
这不管用。它抛到异常下面,因为List2是一个列表,而List1是List。
'String does not contain a definition for filename and no extension method filename accepting a first argument of type string..发布于 2019-10-19 03:03:07
您可以使用LINQ过滤掉这些文件:
List1.Where(f => !List2.Any(str => str.Contains(f.FileName)))解释:
Enumerable.Where()筛选出要保留的List1文件。String.Contains()检查List2文件的Enumerable.Any()是否有子字符串文件名FileName来自List1。在本例中,我们确保在谓词中使用!操作符,以确保不保存在List2中找到的文件。更新
根据问题中更新的需求,只需切换List1和List2即可。您的新查询应该是:
List2.Where(f => !List1.Any(str => str.Contains(f.FileName)))https://stackoverflow.com/questions/58460105
复制相似问题