小编典典

使用 linq 将列表转换为字典,而不用担心重复

all

我有一个 Person 对象列表。我想转换为字典,其中键是名字和姓氏(连接),值是 Person 对象。

问题是我有一些重复的人,所以如果我使用这段代码就会爆炸:

private Dictionary<string, Person> _people = new Dictionary<string, Person>();

_people = personList.ToDictionary(
    e => e.FirstandLastName,
    StringComparer.OrdinalIgnoreCase);

我知道这听起来很奇怪,但我现在并不真正关心重复名称。如果有多个名字,我只想抓住一个。无论如何我可以在上面编写这段代码,所以它只需要其中一个名称并且不会因重复而爆炸?


阅读 63

收藏
2022-07-12

共1个答案

小编典典

这是明显的非 linq 解决方案:

foreach(var person in personList)
{
  if(!myDictionary.ContainsKey(person.FirstAndLastName))
    myDictionary.Add(person.FirstAndLastName, person);
}

如果您不介意总是添加最后一个,则可以避免这样的双重查找:

foreach(var person in personList)
{
    myDictionary[person.FirstAndLastName] = person;
}
2022-07-12