对象必须实现可比较的

本文关键字:可比较 实现 对象 | 更新日期: 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;
}

listtmp 都是完全相同的类,又名testList : List<exampleNC>

我真正想做的是检查内部exampleNC是否已更新private bool,也就是对照新列表(tmp)检查我的原始列表(!list)。

对象必须实现可比较的

您正在尝试使用OrderByexampleNC集合进行排序,而不知道如何比较exampleNC的两个实例。这就是你的错误所在。

使exampleNC实现IComparable<exampleNC>以使错误消息消失,或者选择仅使用其中一个属性而不是整个对象进行排序:

.OrderBy(l => l.a)

但这很可能会导致不正确的结果,除非exampleNC实现IEquatable<exampleNC>,这将使SequanceEqual按预期工作。如果没有它,它将执行引用相等性,这很可能不是您要查找的。