2008-09-05 52 views

回答

3

Deeno

享受:

var foos = new List<Foo> { 
    new Foo{Bar = 1,Lum = 1}, 
    new Foo{Bar = 1,Lum = 2}, 
    new Foo{Bar = 2,Lum = 3}, 
}; 

// Using language integrated queries: 

var q = from foo in foos 
     group foo by foo.Bar into groupedFoos 
     let lums = from fooGroup in groupedFoos 
        select fooGroup.Lum 
     select new { Bar = groupedFoos.Key, Lums = lums }; 

// Using lambdas 

var q = foos.GroupBy(x => x.Bar). 
      Select(y => new {Bar = y.Key, Lums = y.Select(z => z.Lum)}); 


foreach (var group in q) 
{ 
    Console.WriteLine("Lums for Bar#" + group.Bar); 
    foreach (var lum in group.Lums) 
    { 
     Console.WriteLine(lum); 
    } 
} 

要了解更多有关LINQ阅读101 LINQ Samples

4
var q = from x in list 
     group x by x.Bar into g 
     select g; 

foreach (var group in q) 
{ 
    Console.WriteLine("Group " + group.Key); 
    foreach (var item in group) 
    { 
     Console.WriteLine(item.Bar); 
    } 
} 
+0

的`选择在查询g`线实际上不是必要的;你可以通过x.Bar`来写`从列表组x中的x'。 – Aaron 2011-01-07 23:57:23

相关问题