C# 从列表A中选择属性不在列表B中的项目
我有一个C# 从列表A中选择属性不在列表B中的项目,c#,linq,C#,Linq,我有一个列表,而广播对象有一个名为Guid的属性。现在,我需要在该列表中查找所有广播对象,这些对象的Guid属性不是列表中的项目。 我找到了一个使用Except()的解决方案但它对我不起作用 Broadcasts.Where(x => x.Guid).Except(readBroadcasts); 我做错了什么?以下是一种方法: List<Guid> excludeGuid = ..... // You init guids you want to exclude List&
列表
,而广播
对象有一个名为Guid
的属性。现在,我需要在该列表中查找所有广播
对象,这些对象的Guid
属性不是列表
中的项目。
我找到了一个使用Except()的解决方案代码>但它对我不起作用
Broadcasts.Where(x => x.Guid).Except(readBroadcasts);
我做错了什么?以下是一种方法:
List<Guid> excludeGuid = ..... // You init guids you want to exclude
List<Broadcast> result = Broadcasts.Where(x => !excludeGuid.Contains(x.Guid)).ToList() ;
List excludeGuid=……//您可以初始化要排除的GUID
列表结果=广播。其中(x=>!excludeGuid.Contains(x.Guid)).ToList();
试试这个:
Broadcasts.Where(x => !List.Contains(x.Guid))....
您还可以使用:
List notInGuidList=Broadcasts.FindAll(b=>!readBroadcasts.Contains(b.Guid));
另一种更详细但可能更有效的方法是使用LINQ:
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();
var notFound=来自广播中的bc
在readBroadcasts中加入guid
在bc上。Guid等于gj中的Guid
来自gj.DefaultIfEmpty()中的guidJoin
其中guidJoin==默认值(Guid)
选择bc;
List notFoundBroadCasts=notFound.ToList();
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();