LINQ – 查找一个列表中不在另一个列表中的所有项目

我坚持使用LINQ查询(或任何其他有效的方法来完成相同的事情)。 有人可以告诉我如何select一个列表中不存在于另一个列表中的所有项目吗?

基本上,我有一个我通过两个其他列表之间的项目匹配而形成的列表。 我需要find匹配找不到的第一个列表中的所有项目。 有人可以在下面的第二个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.*** 

3 Solutions collect form web for “LINQ – 查找一个列表中不在另一个列表中的所有项目”

尝试使用.Except扩展方法(docs)

 var result = list1.Except(list2); 

将给你list1中不在list2所有项目。

最简单的方法是使用Except方法。

 var deletedItems = list1.Except(joinItems); 

这将返回list1中没有包含在joinItems的一组项目

尝试这个:

 var List2 = OriginalList.Where(item => !List1.Any(item2 => item2.ID == item.ID)); 
  • LINQ读取XML
  • 在返回IEnumerable <T>的方法中使用IDisposable对象
  • Linqsorting,按组sorting?
  • 从LINQ到SQL获取SQL查询?
  • 如何使用LINQ从列表中获取重复的项目?
  • LINQ:“包含”和一个Lambda查询
  • 在C#中枚举对象的属性(string)
  • Moqing Enity框架6.使用DbSet <>包含()
  • select不同的使用LINQ
  • 将IOrderedEnumerable <KeyValuePair <string,int >>转换为Dictionary <string,int>
  • LINQ查询返回一个Dictionary <string,string>