2010-02-05 6 views
36

मैं इस तरह कुछ करना चाहता हूँ:क्या मेरे पास LINQ में वृद्धिशील गणना चर हो सकता है?

from a in stuff 
let counter = 0 
select new { count = counter++, a.Name }; 

लेकिन मैं एक त्रुटि मुझे उस काउंटर कह मिल ही पढ़ा जाता है। क्या क्वेरी के बाहर एक परिवर्तनीय घोषित किए बिना ऐसा कुछ करने का कोई तरीका है?

असल में, मैं सिर्फ LINQPad (जो कि कमाल, बीटीडब्ल्यू) में एक गिनती/अनुक्रमणिका कॉलम दिखाना चाहता है, जिसका अर्थ है कि मैं समय से पहले काउंटर घोषित नहीं कर सकता।

उत्तर

83

बल्कि दुष्प्रभाव का उपयोग, जो एक सूचकांक लेता Select के अधिभार का उपयोग की तुलना में:

stuff.Select((value, index) => new { index, value.Name }); 

आप सकता है यह दुष्प्रभाव का उपयोग कर, लेकिन जिस तरह से आप की कोशिश की में नहीं है:

int counter = 0; 
var query = from a in stuff 
      select new { count = counter++, a.Name }; 

हालांकि मैं इसके खिलाफ दृढ़ता से सलाह दूंगा।

6

आप वास्तव में यह एक काउंटर, और न सिर्फ एक सूचकांक होना चाहते हैं, तो बस LINQ अभिव्यक्ति

var counter = 0; 
from a in stuff 
select new { count = counter++; a.Name }; 
+0

एक और जवाब दृढ़ता से इस के खिलाफ सलाह देता है के बाहर काउंटर घोषणा चलते हैं। http://stackoverflow.com/a/2209014/7724 – bzlm

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

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