2011-12-24 46 views
3

我有以下LINQ查詢:LAMBDA用於加速記

var q = from bal in data.balanceDetails 
     where bal.userName == userName && bal.AccountID == accountNumber 
     select new 
     { 
      date = bal.month + "/" + bal.year, 
      commission = bal.commission, 
      rebate = bal.rebateBeforeService, 
      income = bal.commission - bal.rebateBeforeService 
     }; 

我記得看到一個lambda簡寫求和commission領域的q每一行。 總結這個最好的方法是什麼?除了手動循環結果?

回答

9

這很容易 - 無需循環代碼中:

var totalCommission = q.Sum(result => result.commission); 

請注意,如果你要使用的q各種不同的計算結果(這似乎是一個合理的假設,因爲如果你只想要的總佣金我懷疑你會選擇其他位)你可能想實現查詢一次,使它不需要做所有的過濾和投影多次。這樣做的一個方法是使用:

var results = q.ToList(); 

,會爲你的匿名類型創建一個List<T> - 你仍然可以使用Sum以上代碼的results這裏。

+0

謝謝你的答案和免費提示:) – 2011-12-24 20:39:17

+0

標記答案是正確的,所以:) – ivowiblo 2011-12-25 01:29:33

+0

看起來我是你的第二個聖誕節upvote喬恩:) – 2011-12-25 02:48:29