0

我正在尝试将两个列表映射到字典,但我得到错误“具有相同键的对象已经存在于......”

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

有谁知道如何解决这个问题..谢谢。

4

1 回答 1

0

Distinct查看整个对象,因此所有属性必须相同才能将对象视为相等。如果您的列表之后Zip有两个相同k但不同的元素,vToDictionary.

试试那个:

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方法使用问题。

于 2013-04-01T21:43:57.717 回答