通过使用LINQ过滤两个列表来创建一个dic

时间:2016-06-02 07:50:18

标签: c# linq

我正在寻找一种通过使用linq语句从两个列表中过滤数据来创建dic的方法。例如:

list1: { 1, 2, 3 }
list2: {<apple,1>, <peach, 3>}

最终词典应该与此类似:{<1, <apple,1>>, <3, <peach, 3>>}

&#34; 2&#34;应该使用linq语句跳过,但我不知道哪个?

请使用linq如何解决此问题?感谢

3 个答案:

答案 0 :(得分:5)

generatedPattern列出并将结果放入字典

Join

尝试使用fiddle

答案 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);