从列表A中选择属性不在列表B中的项目

时间:2014-06-26 08:18:41

标签: c# linq

我有List<Broadcast>Broadcast对象有一个名为Guid的属性。现在我需要找到该列表中Broadcast属性不是Guid中的项目的所有List<Guid>个对象。 我找到了Except();的解决方案,但它对我不起作用。

Broadcasts.Where(x => x.Guid).Except(readBroadcasts);

我做错了什么?

3 个答案:

答案 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();