[英]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.