LINQ选择新的KeyValuePair <t,列出<t2>&gt; </t,列出<t2>

时间:2012-07-25 23:39:03

标签: c# linq entity-framework

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

我想转换一下:

var query = (from a in listA 
             from b in a.ListB
             select new {T1=a, T2=b}

对于这样的事情:

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

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

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

结果如下:

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

我很感激帮助。谢谢!

1 个答案:

答案 0 :(得分:6)

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

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

var query = (from a in listA
             select new{ T1 = a, T2 = a.ListB });

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

var asDictionary = query.ToDictionary(item => item.T1, item => item.T2);