我坚持使用LINQ查询(或任何其他有效的方法来完成同样的事情)。有人可以告诉我如何选择一个列表中不存在于另一个列表中的所有项目吗?
基本上,我有一个列表,我通过匹配另外两个列表之间的项目来形成。我需要找到第一个列表中找不到匹配项的所有项目。有人可以在下面的第二个LINQ查询中使用可实现此目标的查询来填充星标吗?如果我使用的是TSQL,我会SELECT * NOT IN ()
,但我认为LINQ不允许这样做。
//Create some sample lists.
List<IdentifierLookupData> list1 = new List<IdentifierLookupData> { /*Init */ };
List<IdentifierLookupData> list2 = new List<IdentifierLookupData> { /*Init */ };
//Find all items in list1 and list2 that match and store them in joinItems.
var joinItems = (from d1 in list1
join d2 in list2 on d1 equals d2
select d1).ToList<IdentiferLookupData>();
//Find all items in list1 not in joinItems.
var deletedItems = (from d1 in list1
***select all items not found in joinItems list.***
答案 0 :(得分:97)
答案 1 :(得分:11)
最简单的方法是使用Except
方法。
var deletedItems = list1.Except(joinItems);
这将返回list1
中未包含在joinItems
答案 2 :(得分:11)
试试这个:
var List2 = OriginalList.Where(item => !List1.Any(item2 => item2.ID == item.ID));