是否可以訪問先前條件的參數變量? 如何做到這一點?Lambda查詢以前的參數訪問
var result = collectionA
.First(a => a.id == 1)
.CollectionB
.SelectMany(b => b.CollectionC)
.Select(c => new { propA = a.id, propC = c.id });
是否可以訪問先前條件的參數變量? 如何做到這一點?Lambda查詢以前的參數訪問
var result = collectionA
.First(a => a.id == 1)
.CollectionB
.SelectMany(b => b.CollectionC)
.Select(c => new { propA = a.id, propC = c.id });
解決辦法:
var result = CollectionA
.Where(a => a.id == 1)
.SelectMany(b =>
b.CollectionB
.SelectMany(c => c.CollectionC)
.Select(c => new { b.id, c.id })
);
您可以根據@阿爾喬姆的答案寫
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(.....
我會測試。謝謝。 –
你的建議爲我工作。我編輯了我的問題,以便提供我使用的解決方案。謝謝! –
你必須創建自己的類來實現Ienumerable,它也可以訪問以前的項目。這將是最有效的方式否則使用不尋常的,複雜的linq技巧將是緩慢和醜陋 –