用列表填充字典

时间:2015-03-22 14:14:08

标签: c# list dictionary

我有2个列表和1个字典:

List<string> A;
List<string> B;
Dictionary<string, string> AB;

我想用2个列表填充字典,其中每个成员的值将是它所来自的列表的名称。

例如:
  ("from list A", "A")
 ("from list A", "A")
("from list B", "B")

我这样做的方式很长,我想要一个更棘手的解决方案:

 //Loop on A
  foreach (string item in A )
    {
        AB.Add(item, "A");
    }   

//Loop on B 
 foreach (string item in B )
     {
        AB.Add(item, "B");
     }  

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

你的解决方案看起来很好!

如果您寻求缩短代码,可以使用List.ForEach扩展名 如:

A.ForEach(x => AB.Add(x, "A"));
B.ForEach(x => AB.Add(x, "B"));

哦,您可能需要考虑使用列表元素计数的总和初始化字典。

答案 1 :(得分:1)

你当然可以使用Linq:

var AB = A.Select(e => new { Key = e, Value = "A" }).Union(
         B.Select(e => new { Key = e, Value = "B" }) )
        .ToDictionary(e => e.Key, e => e.Value);

但它并不是那么短或更清楚。