我有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");
}
有什么想法吗?
答案 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);
但它并不是那么短或更清楚。