使用LINQ进行分组

Ela*_*nda 3 .net c# linq grouping

我如何使用LINQ以实现以下目的?

我有一些c#对象(我把它们写成JSON仅用于简化)

{ Name: A, Domain: a, SubDomain: 1}
{ Name: B, Domain: a, SubDomain: 2}
{ Name: C, Domain: b, SubDomain: 1}
{ Name: D, Domain: b, SubDomain: 2}
{ Name: E, Domain: c, SubDomain: 1}
Run Code Online (Sandbox Code Playgroud)

我想把它们收集起来:

{ Domain: a ,{{Name: A, SubDomain: 1}, {Name: B, SubDomain: 2}}
  Domain: b ,{{Name: C, SubDomain: 1}, {Name: D, SubDomain: 2}}
  Domain: c ,{{Name: E, SubDomain: 1}}
Run Code Online (Sandbox Code Playgroud)

gdo*_*ica 8

你只想分组Domain

var list = GetListFromFoo();
var groupedList = list.GroupBy(x => x.Domain);
Run Code Online (Sandbox Code Playgroud)

这是用这种LINQ方法完成的:

public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
    this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
Run Code Online (Sandbox Code Playgroud)

MSDN


如果我理解你的评论,那么这就是你要找的:

var groupedList = list.GroupBy(x => x.Domain, x => new
                                        {
                                            x.Name,
                                            x.SubDomain
                                        });
Run Code Online (Sandbox Code Playgroud)

MSDN