如何在使用c#将列表映射到字典时过滤值
本文关键字:映射 字典 过滤 列表 | 更新日期: 2023-09-27 18:07:01
我正在尝试将两个列表映射到字典,但我得到错误"具有相同键的对象已经存在于…"
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);
谁知道怎么解决这个问题?谢谢。
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
方法使用的问题。