2016-05-17 92 views
-1

是否可以訪問先前條件的參數變量? 如何做到這一點?Lambda查詢以前的參數訪問

var result = collectionA 
    .First(a => a.id == 1) 
    .CollectionB 
    .SelectMany(b => b.CollectionC) 
    .Select(c => new { propA = a.id, propC = c.id }); 
+0

你必須創建自己的類來實現Ienumerable,它也可以訪問以前的項目。這將是最有效的方式否則使用不尋常的,複雜的linq技巧將是緩慢和醜陋 –

回答

0

解決辦法:

var result = CollectionA 
    .Where(a => a.id == 1) 
    .SelectMany(b => 
     b.CollectionB 
     .SelectMany(c => c.CollectionC) 
     .Select(c => new { b.id, c.id }) 
    ); 
2

您可以根據@阿爾喬姆的答案寫

var result = collectionA 
.Where(q => q.id == 1).Take(1) //it will be collection of 1 element 
.Select(a => a 
.CollectionB 
.SelectMany(b => b.CollectionC) 
.Select(c => new { propA = a.id, propC = c.id })).First(); 

(new [] { collectionA.First(q => q.id == 1) }) 
.Select(a => a 
.... 

或只是

var a = collectionA.First(q => q.id = 1); 
a.Select(..... 
+0

我會測試。謝謝。 –

+0

你的建議爲我工作。我編輯了我的問題,以便提供我使用的解決方案。謝謝! –