#c# #linq
#c# #linq
Вопрос:
У меня есть a List<Broadcast>
, и у Broadcast
объекта есть свойство , которое называется Guid
. Теперь мне нужно найти все Broadcast
объекты в этом списке , Guid
свойство которых не является элементом List<Guid>
. Я нашел решение, Except();
но оно не работает для меня.
Broadcasts.Where(x => x.Guid).Except(readBroadcasts);
Что я делаю не так?
Ответ №1:
Вот способ, которым вы можете это сделать :
List<Guid> excludeGuid = ..... // You init guids you want to exclude
List<Broadcast> result = Broadcasts.Where(x => !excludeGuid.Contains(x.Guid)).ToList() ;
Ответ №2:
Попробуйте это :
Broadcasts.Where(x => !List.Contains(x.Guid))....
Ответ №3:
Вы также можете использовать List.FindAll
:
List<Broadcast> 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();