如何使用Linq基于另一个列表过滤列表?

时间:2013-09-24 09:34:27

标签: c# visual-studio-2010 linq

我有两个列表,一个是 Venue 对象列表,一个是 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字段,我需要使用这两个< / p>

非常感谢

1 个答案:

答案 0 :(得分:42)

试试这个:

var filtered = listOfAllVenuses
                   .Where(x=>!listOfBlockedVenues.Any(y=>y.VenueId == x.Id));

它将获得Id不在blockVenues列表中的所有场地