LINQ选择新的KeyValuePair <T,List <T2 >>

Xav*_*ier 3 c# linq entity-framework

我有这样的LINQ查询:通过实体框架导航属性链接的两个列表(两个实体都有多对多关系)

我想转换一下:

var query = (from a in listA 
             from b in a.ListB
             select new {T1=a, T2=b}
Run Code Online (Sandbox Code Playgroud)

对于这样的事情:

var query = (from a in listA
             from b in a.ListB
             select new KeyValuePair<T1,List<T2>>{ T1=a , T2=b})
Run Code Online (Sandbox Code Playgroud)

第一个查询生成如下项目列表:{(a,x),(a,y),(a,z),(b,x)...}

第二个查询的目的是将结果合并到具有自己列表的项目中.

结果将如下所示:

{(a,列出项目x,y,z),(b,列表项目x)...}

我很感激你的帮助.谢谢!

Ris*_*tin 6

编辑:感谢Stijn纠正我的回答.

它看起来a已经包含了相关b项目的列表,所以这不会起作用吗?

var query = (from a in listA
             select new{ T1 = a, T2 = a.ListB });
Run Code Online (Sandbox Code Playgroud)

您还可以将查询转换为字典:

var asDictionary = query.ToDictionary(item => item.T1, item => item.T2);
Run Code Online (Sandbox Code Playgroud)