2013-09-26 7 views
5

में इंडेक्स का उपयोग करके मैं एक सूची के क्रमांकित समूह करने की कोशिश कर रहा हूं। उदाहरण के लिए इस LINQ क्वेरी देता है जो मैं चाहताSelectMany LINQ

(from word in "The quick brown fox jumps over the lazy dog" .Split() 
group word by word.Length into w 
select w) 
.Select((value, index) => new { i = index + 1, value }) 
.SelectMany(
sm => sm.value, 
(sm, s) => new { sm.i, s}) 

1 The 
1 fox 
1 the 
1 dog 
2 quick 
2 brown 
2 jumps 
3 over 
3 lazy 

लेकिन मैं इस क्वेरी अनुकूलन करने के लिए फैसला किया है: क्यों हम SelectMany सूचकांक के लिए बाहरी का उपयोग करता है, तो यह SelectMany के 4 अधिभार में सूचकांक ही है की जरूरत है? और मैंने अगली बार इस अधिभार का उपयोग करने की कोशिश की, लेकिन मुझे समाधान नहीं दिख रहा है।

(from word in "The quick brown fox jumps over the lazy dog".Split() 
      group word by word.Length into w 
      select w) 
       .SelectMany(
       (source, index) => ??????, 
       (msource, coll) => ??????) 

उत्तर

3

SelectMany की This overload काम करना चाहिए:

(from word in "The quick brown fox jumps over the lazy dog".Split() 
group word by word.Length into g 
select g) 
.SelectMany((g, i) => g.Select(word => new { index = i + 1, word })) 
+0

वाह! यह अपेक्षा की तुलना में यह बहुत आसान है। –