Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ选择新的KeyValuePair<;T、 列表<;T2>&燃气轮机;_C#_Linq_Entity Framework - Fatal编程技术网

C# LINQ选择新的KeyValuePair<;T、 列表<;T2>&燃气轮机;

C# LINQ选择新的KeyValuePair<;T、 列表<;T2>&燃气轮机;,c#,linq,entity-framework,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 KeyV

我有这样一个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})
var query=(来自列表a中的
从a中的b开始
选择新的KeyValuePair{T1=a,T2=b})
第一个查询生成如下项的列表:{(a,x)、(a,y)、(a,z)、(b,x)…}

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

结果如下所示:

{(a,包含项目x、y、z的列表),(b,包含项目x的列表)…}


我很感激你的帮助。谢谢

编辑:感谢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);

哦,说得好。。。我没有注意到它是
a.ListB
,而不仅仅是
ListB
:P@minitech我必须看两遍代码才能注意到。希望这只是一个简单的例子,不负责发射导弹!另一件需要注意的事情是,多个
from
语句贯穿每一个组合,有点像嵌套的
foreach
语句。这个片段完全错误。对象初始化器中的
T1
T2
是什么?它应该是
。不过,这也不行,因为
都是只读的。@Stijn有趣的一点。实际上,我们根本不需要KeyValuePair,只需要执行
new{T1=a,T2=a.List}
,对吗?对。然后,如果需要,您可以使用
.ToDictionary(item=>item.T1,item=>item.T2)创建一个
字典
。如果你能更新你的答案,我会把反对票改为赞成票。