对象必须实现IComparable?

时间:2014-12-28 02:49:15

标签: c# .net

我有以下类文件;

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;
}

listtmp都是完全相同的CLASSES testList : List<exampleNC>

我要做的是检查private bool内部exampleNC是否已更新,并检查我的原始列表(!list)是否针对新列表tmp )。

1 个答案:

答案 0 :(得分:1)

您尝试使用OrderByexampleNC的集合进行排序,而不告诉如何比较exampleNC的两个实例。那就是你的错误。

让您的exampleNC工具IComparable<exampleNC>使错误消息消失,或选择仅使用其中一个属性而不是整个对象进行订购:

.OrderBy(l => l.a)

但是,这很可能会导致错误的结果,除非exampleNC实现IEquatable<exampleNC>,这将使SequanceEqual按预期工作。没有它,它将执行引用相等,这很可能不是你正在寻找的。