我有两张单子
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
发布于 2012-08-15 01:36:17
你可以这样做:
HashSet<int> sentIDs = new HashSet<int>(SentList.Select(s => s.MsgID));
var results = MsgList.Where(m => !sentIDs.Contains(m.MsgID));
这将返回在SentList
中没有匹配ID的MsgList
中的所有消息。
发布于 2012-08-15 01:52:14
好吧,你已经有了很好的答案,但它们大多是Lambda。更多的LINQ方法如下所示
var NotSentMessages =
from msg in MsgList
where !SentList.Any(x => x.MsgID == msg.MsgID)
select msg;
发布于 2016-09-08 19:53:58
你可以这样做,这是最快的过程
Var result = MsgList.Except(MsgList.Where(o => SentList.Select(s => s.MsgID).ToList().Contains(o.MsgID))).ToList();
这将为您提供预期的输出。
https://stackoverflow.com/questions/11957685
复制相似问题