gpt4 book ai didi

c# - 将不同的列表转换为字典不起作用

转载 作者:行者123 更新时间:2023-11-30 19:37:21 24 4
gpt4 key购买 nike

我正在尝试使用以下代码将对象列表转换为字典:

 var MyDictionary = MyList.Distinct().ToDictionary(i => i.ObjectId, i => i);

我知道字典不应该包含重复的元素,因此 .Distinct()。然而,每当有重复元素时,我仍然会收到以下异常:

An item with the same key has already been added.

MyList 是一个 MyObject 列表,如下所示:

public class MyObject{

public string ObjectId { get; set; }

public string FName { get; set; }

public string LName { get; set; }

}

是否有更好的方法从对象列表创建字典?还是我做错了什么?

最佳答案

如果您想比较 ObjectId,您需要将自定义比较器传递给 .Distinct()。您可以这样做:

class MyObjectComparer : IEqualityComparer<MyObject>
{
public bool Equals(MyObject x, MyObject y)
{
return x.ObjectId == y.ObjectId;
}

public int GetHashCode(MyObject obj)
{
return obj.ObjectId.GetHashCode();
}
}

var MyDictionary = MyList
.Distinct(new MyObjectComparer())
.ToDictionary(i => i.ObjectId, i => i);

关于c# - 将不同的列表转换为字典不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38311538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com