首页 > 解决方案 > c#中两个列表交叉连接后将数据合并到单个字典中

问题描述

在此处输入图像描述我有两个字典列表,我正在应用 LINQ 查询来获得交叉连接。

var result= list1.SelectMany(x=> list2,(x,y)=> new {x,y});

现在结果有所有记录,但 x 和 y 都是分开的,但我希望两个字典在一行中,没有 x 和 y,表中的字典也是动态的,因此它可能有任何键和值。

提前致谢!

标签: c#linqcross-join

解决方案


也许你的意思是你希望你的输出“​​行”是一个包含所有 x 和所有 y 的字典。它可能是这样的:

var result= list1.SelectMany(
  x=> list2,
  (x,y) => new Dictionary<WhateverType,YouHave>(x.Concat(Y))
);

它获取所有KeyValuePair<WhateverTypr,YouHave>in x 和 y 并IEnumerable<KeyValuePair<WhateverType,YouHave>>从中生成一个,然后创建一个包含所有这些键值对的新字典

字典的类型需要保持一致;例如,您不能让 x 成为 aDictionary<string,int>并且 y 成为 aDictionary<int,string>


推荐阅读