我有List<Broadcast>
,Broadcast
对象有一个名为Guid
的属性。现在我需要找到该列表中Broadcast
属性不是Guid
中的项目的所有List<Guid>
个对象。
我找到了Except();
的解决方案,但它对我不起作用。
Broadcasts.Where(x => x.Guid).Except(readBroadcasts);
我做错了什么?
答案 0 :(得分:5)
这是一种可以做到的方法:
List<Guid> excludeGuid = ..... // You init guids you want to exclude
List<Broadcast> result = Broadcasts.Where(x => !excludeGuid.Contains(x.Guid)).ToList() ;
答案 1 :(得分:3)
试试这个:
Broadcasts.Where(x => !List.Contains(x.Guid))....
答案 2 :(得分:3)
您还可以使用List.FindAll
:
List<Broadcast> notInGuidList = Broadcasts.FindAll(b => !readBroadcasts.Contains(b.Guid));
另一种更详细但可能更有效的方法是使用LINQ:{/ p> "Left-Outer-Join"
var notFound = from bc in Broadcasts
join guid in readBroadcasts
on bc.Guid equals guid into gj
from guidJoin in gj.DefaultIfEmpty()
where guidJoin == default(Guid)
select bc;
List<Broadcast> notFoundBroadCasts = notFound.ToList();