我有一个 Person 对象列表。我想转换为字典,其中键是名字和姓氏(连接),值是 Person 对象。
问题是我有一些重复的人,所以如果我使用这段代码就会爆炸:
private Dictionary<string, Person> _people = new Dictionary<string, Person>(); _people = personList.ToDictionary( e => e.FirstandLastName, StringComparer.OrdinalIgnoreCase);
我知道这听起来很奇怪,但我现在并不真正关心重复名称。如果有多个名字,我只想抓住一个。无论如何我可以在上面编写这段代码,所以它只需要其中一个名称并且不会因重复而爆炸?
这是明显的非 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; }