我正在尝试将两个列表映射到字典,但我得到错误“一个具有相同密钥的对象已存在于...”
List<string> columnValue = new List<string>();
List<string> xpathValue = new List<string>();
var dic = columnValue.Zip(xpathValue, (k, v) => new { k, v}).Distinct().ToDictionary(x => x.k, x => x.v);
有谁知道如何解决这个问题。谢谢。
答案 0 :(得分:0)
Distinct
查看整个对象,因此所有属性必须相同才能将对象视为相等。如果Zip
之后的列表包含两个具有相同k
但差异v
的元素,则ToDictionary
会出错。
尝试一下:
var dic = columnValue.Zip(xpathValue, (k, v) => new { k, v})
.GroupBy(x => x.k)
.ToDictionary(g => g.Key, g => g.First().v);
它按k
对元素进行分组,并添加到每个组中第一个元素的字典v
。这解决了Distinct
方法使用的问题。