我正在寻找一种通过使用linq语句从两个列表中过滤数据来创建dic的方法。例如:
list1: { 1, 2, 3 }
list2: {<apple,1>, <peach, 3>}
最终词典应该与此类似:{<1, <apple,1>>, <3, <peach, 3>>}
请使用linq如何解决此问题?感谢
答案 0 :(得分:5)
答案 1 :(得分:1)
如果您愿意,可以使用SelectMany
:
var result = (from l1 in list1
from l2 in list2
where l1 == l2.Id
select new
{
Id = l1,
Name = l2.Name
}).ToDictionary(k=>k.Id, v=>v.Name);
答案 2 :(得分:0)
您可以使用Enumerable.Zip
将两个列表合并为一个,然后Enumerable.ToDictionary
生成字典。
类似的东西:
var result = list1.Zip(list2, (l, r) => Tuple.Create(l, r))
.ToDictionary(v => v.Item1, v => v.Item2);