簡體   English   中英

LINQ選擇列表,其中子列表包含來自另一個列表的項目

[英]LINQ select List where sub-list contains item from another list

我無法解決如何創建此查詢的問題。 如果項目Cats列表包含與List2中某個Cats的ID匹配的Cat對象,我需要選擇列表1中的項目。 這可能嗎? 謝謝

List1<pet> List1 = new List<pet>(100);
List2<cat> List2 = new List<cat>(30);

//populate lists, some of the items in List2 (cat) will be in the List1 items Cats list

//classes
class pet{
   string ID;
   List<cat> Cats;
}

class cat {
   string ID;
   string name;
}

您可以使用以下LINQ表達式:

List1.Where(p => p.Cats.Any(c => List2.Any(c2 => c2.ID == c.ID)));

您還應該能夠使用intersect(即如果您的類重寫了Equals方法以檢查匹配的ID - 請參閱MSDN上的Intersect ):

List1.Where(p => p.Cats.Intersect(List2).Any())

這應該適用於嵌套的Any

var result = List1.Where(p => List2.Any(l => p.Cats.Any(c => c.ID == l.ID)));

嘗試這個

var naughtycats = List1.Where(pet => List2.Select(cat => cat.ID).Contains(pet.ID));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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