簡體   English   中英

如何使用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM