我有以下类文件;
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;
}
现在,我有以下代码抛出错误&#34; Atleast一个对象必须实现IComparable&#34;
if (!list.OrderBy(l => l).SequenceEqual(tmp.OrderBy(l => l)))
{
list = tmp;
updated = true;
}
list
和tmp
都是完全相同的CLASSES testList : List<exampleNC>
我要做的是检查private bool
内部exampleNC
是否已更新,并检查我的原始列表(!list
)是否针对新列表tmp
)。
答案 0 :(得分:1)
您尝试使用OrderBy
对exampleNC
的集合进行排序,而不告诉如何比较exampleNC
的两个实例。那就是你的错误。
让您的exampleNC
工具IComparable<exampleNC>
使错误消息消失,或选择仅使用其中一个属性而不是整个对象进行订购:
.OrderBy(l => l.a)
但是,这很可能会导致错误的结果,除非exampleNC
实现IEquatable<exampleNC>
,这将使SequanceEqual
按预期工作。没有它,它将执行引用相等,这很可能不是你正在寻找的。 p>