对象必须实现可比较的
本文关键字:可比较 实现 对象 | 更新日期: 2023-09-27 18:35:22
我有以下类文件;
class testList : List<exampleNC>
{
// within the class, using a function, I add stuff to the list.
}
class exampleNC
{
private string s,p,c; private bool a;
}
现在,我有以下代码,它抛出错误"至少一个对象必须实现 IComparable"
if (!list.OrderBy(l => l).SequenceEqual(tmp.OrderBy(l => l)))
{
list = tmp;
updated = true;
}
list
和 tmp
都是完全相同的类,又名testList : List<exampleNC>
我真正想做的是检查内部exampleNC
是否已更新private bool
,也就是对照新列表(tmp
)检查我的原始列表(!list
)。
您正在尝试使用OrderBy
对exampleNC
集合进行排序,而不知道如何比较exampleNC
的两个实例。这就是你的错误所在。
使exampleNC
实现IComparable<exampleNC>
以使错误消息消失,或者选择仅使用其中一个属性而不是整个对象进行排序:
.OrderBy(l => l.a)
但这很可能会导致不正确的结果,除非exampleNC
实现IEquatable<exampleNC>
,这将使SequanceEqual
按预期工作。如果没有它,它将执行引用相等性,这很可能不是您要查找的。