C# 使用LINQ分组

C# 使用LINQ分组,c#,.net,linq,grouping,C#,.net,Linq,Grouping,如何使用LINQ实现以下功能 我有一些c#对象(我把它们写成JSON只是为了简化) 我想把它们收集为: { 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}} 您只想按域进行分组 var list = GetListFr

如何使用
LINQ
实现以下功能

我有一些c#对象(我把它们写成
JSON
只是为了简化)

我想把它们收集为:

{ 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}}

您只想按
域进行分组

var list = GetListFromFoo();
var groupedList = list.GroupBy(x => x.Domain);
这是通过以下
LINQ
方法完成的:

public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
    this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)

GroupBy(x=>x.Domain)
你想用谷歌搜索吗?两件事:a)每个键下的元素仍然是原始类型,不忽略互键。b) 键不是集合的成员,它不会在JSON之后反映出来serializtion@EladBenda. 请显示类成员,以及您希望最后的类型是什么。
{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}
public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
    this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
var groupedList = list.GroupBy(x => x.Domain, x => new
                                        {
                                            x.Name,
                                            x.SubDomain
                                        });