2015-04-17 69 views
0

我有一個類(classA),它具有另一個類(classB)的列表,而該列表又具有另一個類(classC)的列表。當ID屬性匹配我正在搜索的內容時,我想要檢索classC的特定實例。這是我目前所擁有的:基於類屬性的LINQ選擇列表元素

   ClassC foundC = null; 
       foreach (var a in aList) 
       { 
        foreach (var b in a.bList) 
        { 
         foreach (var c in b.cList) 
         { 
          if (c.IdProperty == searchId) 
          { 
           foundC = c; 
          } 
         } 
        } 
       } 

是否可以使用Linq執行此搜索?

回答

3
var c = aList 
    .SelectMany(_ => _.bList) 
    .SelectMany(_ => _.cList) 
    .FirstOrDefault(_ => _.IdProperty == searchId); 
3
var foundC = aList.SelectMany(a => a.bList).SelectMany(b => b.cList).FirstOrDefault(c => c.IdProperty == searchId); 
1

你可以使用嵌套SelectMany S + FirstOrDefault

ClassC foundC = aList.SelectMany(a => a.bList.SelectMany(ab => ab.cList)) 
    .FirstOrDefault(c => c.IdProperty == searchId); 
if(foundC != null) 
{ 
    // found one 
}