c# – 比较两个列表,并使用linq返回不匹配的项

我有两个名单

List<Sent> SentList;
List<Messages> MsgList;

都具有称为MsgID的相同属性;

MsgList            SentList  

MsgID Content      MsgID Content Stauts
1       aaa        1       aaa     0
2       bbb        3       ccc     0
3       ccc        
4       ddd
5       eee

我想将Msglist中的MsgID与发送列表进行比较,并且需要使用linq不在发送列表中的项目

Result 

MsgID Content
2       bbb
4       ddd
5       eee
你可以这样做:

HashSet<int> sentIDs = new HashSet<int>(SentList.Select(s => s.MsgID));

var results = MsgList.Where(m => !sentIDs.Contains(m.MsgID));

这将返回在SentList中没有匹配ID的MsgList中的所有消息.

翻译自:http://stackoverflow.com/questions/11957685/compare-two-list-and-return-not-matching-items-using-linq

转载注明原文:c# – 比较两个列表,并使用linq返回不匹配的项