2013-10-21 10 views
5

मैं कोड की इस पंक्तिLINQ में गणना() का उपयोग करने का सबसे अच्छा तरीका?

var count = materials.Where(i => i.MaterialType1 == MaterialType.Major).Count(); 

जो Resharper मुझे

var count = materials.Count(i => i.MateriakType1 == MaterialType.Major); 

क्यों करने के लिए बदलने के लिए संकेत देता है है? कोई भी मुझे बताता है कि बदलने के लाभ क्या हैं?

+8

अच्छा, स्पष्ट उत्तर होगा: यह दो की बजाय एक फ़ंक्शन कॉल है और यह छोटा है। – Zruty

+0

जेनरेट एसक्यूएल बराबर है। – Dannydust

उत्तर

5

यदि मैं हमेशा खराब होता तो दूसरा दूसरा नहीं कहूंगा। यह संदर्भ पर निर्भर करता है।

LINQ से ऑब्जेक्ट्स के लिए दूसरे का उपयोग करना बेहतर है, क्योंकि तेज होने के लिए मान लीजिए। मैंने इसका परीक्षण नहीं किया, इसलिए यह वास्तव में मेरा अनुमान है।

हालांकि, इस तरह के परिवर्तनों से सावधान रहें, क्योंकि वे हमेशा समकक्ष नहीं होते हैं। जैसे यदि आप LINQ से इकाइयों का उपयोग करते हैं तो दूसरा कोई काम नहीं करेगा! ऐसा इसलिए है क्योंकि भविष्यवाणी के साथ Count अधिभार supported by LINQ to Entities नहीं है।

2

मुझे लगता है कि यह इस बात पर निर्भर करता है कि आप इसका उपयोग कैसे करना चाहते हैं। चलें कहते हैं कि तुम एक प्रश्न है:

var query=materials.Where(i => i.MaterialType1 == MaterialType.Major); 
var query2=query. ... sub query 
var result=query. ... some operation 
var result=query.Count() ; 

आप मन में आस्थगित निष्पादन के साथ लिखना है तो मैं पहली बार प्रश्नों लेखन पसंद करते हैं और तदनुसार का उपयोग (बल्कि गणना की तरह लालची ऑपरेटरों का उपयोग करने से()) लेकिन जैसा कि मैंने कहा निर्भर करता हैं परिदृश्य पर।

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