2010-06-07 9 views
9

अगर मैं आज इस कोड है LINQ का उपयोग कर कुल योग पता लगाने के लिए:कैसे आप एक लैम्ब्डा अभिव्यक्ति के लिए एक शर्त जोड़ सकता हूँ

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

और मैं चाहता हूँ केवल itms शामिल करने के लिए जहां r.CanDrive == सच

क्या आप एक लिंक को लैम्ब्डा अभिव्यक्ति में जोड़ सकते हैं? आप कैसे करते हैं यह

उत्तर

16

आप कर सकते थे श्रृंखला LINQ के दो टुकड़े एक साथ इतनी तरह:

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

अग्रणी संश्लेषण के साथ क्या है? – Codesleuth

+0

@ कोडसथुथ - वसा उंगलियां! धन्यवाद ... –

+0

आपकी डायलिंग वैंड पोस्ट में है :) – MPritchard

10

डेविड का जवाब पूरी तरह से सही है, लेकिन एक और विकल्प एक सशर्त ऑपरेटर का उपयोग करने के लिए हो सकता है:

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

मैं व्यक्तिगत रूप से Where रूप का उपयोग करता हूं, लेकिन मैंने सोचा कि मैं एक विकल्प पेश करूंगा ...

(फिर भी एक और विकल्प अपना खुद का 0 बनाना होगाविधि जो एक अनुमान और प्रक्षेपण दोनों लेती है, लेकिन मुझे लगता है कि यह शीर्ष पर है।)

संबंधित मुद्दे