2010-06-07 28 views
9

如果我今天有這樣的代碼使用LINQ to找出總和:你如何添加條件lambda表達式

return (MyArray.Sum(r => r.Trips); 

,我想只包括ITMS 其中r.CanDrive ==真

你可以在一個linke lambda表達式中添加一個條件嗎?你會怎麼做這

回答

16

你可以鏈LINQ的兩位在一起,就像這樣:

return MyArray.Where(r => r.CanDrive).Sum(r => r.Trips); 
+0

什麼是主導括號? – Codesleuth 2010-06-07 11:08:04

+0

@Codesleuth - 胖手指!謝謝... – 2010-06-07 11:19:02

+0

你的撥號棒在帖子:) – MPritchard 2010-06-07 14:11:49

10

大衛的回答是完全正確的,但另一種方法是使用條件運算符:

return MyArray.Sum(r => r.CanDrive ? r.Trips : 0); 

我會親自使用Where表格,但我想我會提供一個替代方案...

(還有一種方法是創建自己的Sum方法同時採用了謂詞和投影,但我認爲這是超過頂部。)