3
在我的新項目中,我正在寫很多LINQ。 我有一個像這樣的很多LINQ查詢:簡化和設計LINQ查詢
...
group new {A, B} by new {....}
into g
// Calculate select claw
let SumVal1 = g.Sum(x => x.A.Value1 * func(x.A, x.B))/g.Sum(x => func(x.A, x.B))
let SumVal2 = g.Sum(x => x.A.Value2 * func(x.A, x.B))/g.Sum(x => func(x.A, x.B))
let SumVal3 = g.Sum(x => x.A.Value3 * func(x.A, x.B))/g.Sum(x => func(x.A, x.B))
....
// Here could be some calculation, that are not patterned, like:
let NotPatternedSum1 = g.Sum(x => x.A.Duration)
...
select new {SumVal1, SumVal2, SumVal3, ..., NotPatternedSum, ...}
如何我可以簡化這個?我有這種模式(Sum(A * func)/ Sum(func))的許多查詢 - 我怎麼能將這個引入到單個方法或委託?
也許你看過一些設計大LINQ查詢的建議?我的代碼是由95%的LINQ(我把數據庫邏輯移動到客戶端)組成的。請給我一些提示,也許不平凡=)
而且我要避免使用非匿名類型
日Thnx,很簡單 - 但我有一個給定的實現問題。 我的g值是IEnumerable <匿名類型>(或IGrouping <匿名類型>?),我的func不能接受匿名類型作爲參數 – Archeg 2010-08-19 12:44:46
@Archeg:我編輯了答案,在底部添加了一個額外的例子。 – 2010-08-19 12:48:36
哇,thnx。至於我 - 非常酷的東西,當VS顯示成員xA,xB在最後一個lambda =) thnx很多 – Archeg 2010-08-19 12:55:18