2015-03-24 34 views
7

我該如何編寫一個LINQ語句來選擇在其集合中具有匹配的子對象的父對象?這裏是示例類。Linq選擇父對象,其中的子對象有一個匹配的子對象

class Parent { 
    int ID { get; set; } 
    string Name { get; set; } 
    List<Child> Children { get; set; } 
} 

class Child { 
    int ID { get; set; } 
    string Name { get; set; } 
    string Nickname { get; set; } 
} 

在上面的示例中,我想返回包含具有特定暱稱的子項的所有父項。

+2

投下的問題是相當苛刻的。在輸入這個抽象答案之前,我搜索了SO *和* Google。如果這裏的工具更好,也許我不會有重複的問題。 – 2015-03-25 01:44:04

+2

Upvoted。這是我的谷歌搜索「linq基於子對象選擇父對象」的最佳結果。如果我有代表,我會取消這一點作爲重複;鏈接的問題提供了類似的答案,但問題標題的表述方式並不直觀。 – Will 2016-02-04 23:57:05

+1

謝謝你。 – 2016-02-05 16:53:01

回答

18

這是straightfoward LINQ到對象:

listOfParents.Where(p => p.Children.Contains(childObjectToMatch)) 

對LINQ到實體,如果孩子對象不跟蹤,你可能會需要匹配的子對象標識符字段的實體:

int childObjectIdToMatch = childObjectToMatch.ID; 
dbContext.Parents.Where(p => p.Children.Any(c => c.ID == childObjectIdToMatch)); 
+1

感謝您花時間提供答案。你一直是最有幫助的。 – 2015-03-25 01:44:41

+0

感謝您在檢查兒童房產時提醒我關於Any()。 – gregsonian 2018-02-19 15:47:57

相關問題