2008-11-06 3 views
47

चलें कहते हैं कि मैं इस तरह की एक सरणी है:तुम कैसे Linq करने के लिए एक सूचकांक क्षेत्र में शामिल कर सकता परिणाम

:

string [] Filelist = ... 

मैं एक Linq परिणाम जहां प्रत्येक प्रविष्टि इसे इस तरह सरणी में स्थिति है है बनाना चाहते हैं,

var list = from f in Filelist 
    select new { Index = (something), Filename = f}; 

1 आइटम, 2 के लिए 1 के लिए 0 होने की अनुक्रमणिका, आदि

मैं अभिव्यक्ति सूचकांक के लिए क्या इस्तेमाल करना चाहिए =?

उत्तर

113

एक क्वेरी अभिव्यक्ति का उपयोग न करें। the overload of Select which passes you an index का उपयोग करें:

var list = FileList.Select((file, index) => new { Index=index, Filename=file }); 
+0

कैसे आप इस एसक्यूएल वाक्य रचना में क्या करते हो? – toddmo

+0

@toddmo: "एसक्यूएल सिंटैक्स में" क्या आपका मतलब है "LINQ क्वेरी एक्सप्रेशन का उपयोग करना"? यदि हां, तो आप नहीं कर सकते। यदि आपका मतलब है "एसक्यूएल में ही" तो मुझे नहीं पता - मुझे संदेह है कि ऐसा करने के गैर पोर्टेबल तरीके हैं। –

+0

मैंने इसे समझ लिया, धन्यवाद। मैं इस का मतलब: '(driver.Rating_DrivingHistory में GHCOPPADriverHistoryType driverHistory से policy.Drivers में GHCOPPADriverType ड्राइवर से का चयन करें (चालक: ड्राइवर, इतिहास: driverHistory)) .Select ((टी, मैं) => नई DriverHistoryModel (टी । इतिहास) {DriverId = t.driver.Id, अनुक्रम = i + 1}); '। इसलिए मुझे 'चयन' ओवरलोड का उपयोग करने के लिए क्वेरी एक्सप्रेशन से बाहर निकलना पड़ा। – toddmo

0
string[] values = { "a", "b", "c" }; 
int i = 0; 
var t = (from v in values 
select new { Index = i++, Value = v}).ToList(); 
+2

फ्रेमवर्क द्वारा प्रदान किए गए संस्करण का उपयोग करने के बजाय उन सभी परेशानी क्यों करें? –

+13

कृपया linq प्रश्नों के भीतर कभी भी उत्परिवर्तन न करें .... – yfeldblum

+1

क्यों नहीं !? यह काम करता हैं। इस तरह आपका पूरा नियंत्रण है। मैं शायद यह खुद नहीं करूँगा, लेकिन यही सवाल पूछा गया था। – GeekyMonkey