C# Linq 唯一不适用于列表
本文关键字:适用于 列表 不适用 唯一 Linq | 更新日期: 2023-09-27 18:32:02
我正在尝试使用以下代码来检查列表是否包含重复的数据:
internal class Program
{
private static void Main(string[] args)
{
var list = new List<Obj>() { new Obj() { id = "1", name = "1" }, new Obj() { id = "1", name = "1" } };
Console.WriteLine(AllItemsAreUnique(list));
}
public static bool AllItemsAreUnique<T>(IEnumerable<T> items)
{
return items.Distinct().Count() == items.Count();
}
}
internal class Obj
{
public string id;
public string name;
}
结果是真的!为什么?
为什么?
默认情况下,比较将使用引用,在这种情况下,两个对象引用并不相同。
您需要实现IEquatable<T>
以提供特定于类型的Equals()
方法供Distinct()
使用。