2010-11-22 126 views
4

this example:這個Linq查詢的等效C#擴展方法是什麼?

public void Linq40() 
{ 
    int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; 

    var numberGroups = 
     from n in numbers 
     group n by n % 5 into g 
     select new { Remainder = g.Key, Numbers = g }; 

    foreach (var g in numberGroups) 
    { 
     Console.WriteLine("Numbers with a remainder of {0} when divided by 5:", 
      g.Remainder); 

     foreach (var n in g.Numbers) 
     { 
      Console.WriteLine(n); 
     } 
    } 
} 

什麼是純C#相同呢?我得到這個...

var numberGroups = numbers.GroupBy(n => n % 5)... 

into子句是一個有點神祕,我無法弄清楚如何從Select得到Key

+1

我想你的意思是用「擴展方法」來實現它的方式? – JOBG 2010-11-22 23:03:56

回答

8

GroupBy返回<IGrouping<TKey, TSource>IEnumerable<T>。有了這個,你可以做第二次選擇操作,它返回如上完全一樣的值:

var numberGroups = numbers.GroupBy(n => n % 5) 
          .Select(g => new { Remainder = g.Key, Numbers = g }); 
8
numbers.GroupBy(n => n % 5).Select(g => new { Remainder = g.Key, Numbers = g });