[英]Filter a list based on another list containing IEnumerable<Guid> using linq
[英]How to filter a list based on another list using Linq?
我有这两个列表,一个是场地对象列表,一个是BlockedVenues对象列表。
我需要过滤listOfAllVenues中的每个项目,以便它不包含任何被阻止的地点
IQueryable<Venue> listOfAllVenues = MyDB.Venues;
IQueryable<BlockedVenue> listOfBlockedVenues = Mydb.BlockedVenue;
//I need something to accomplish this please
// var listOfAllVenues_WithoutBlocked_Venues =
( Select All venues from listOfAllVenues
where listOfAllVenues.ID is NOT in
listOfBlockedVenues.VenueID)
请注意,是的,两种列表类型都不同,但是listOfAllVenues有一个 int ID 字段,而listOfBlockedVenues有一个 VenueID int 字段,我需要使用这两个
非常感谢
试试这个:
var filtered = listOfAllVenues
.Where(x=>!listOfBlockedVenues.Any(y=>y.VenueId == x.Id));
它将获取所有 Id 不在被阻止的场所列表中的场所
从 .NET 6 开始,您可以使用ExceptBy
。
var filtered = allVenues.ExceptBy(blockedVenues.Select(x => x.VenueID), venue => venue.ID);
这将获得所有场地,除了 ID 在blockedVenues.Select(x => x.VenueID)
中的场地
https://learn.microsoft.com/en-us/do.net/api/system.linq.enumerable.exceptby?view.net-6.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.