这个匿名对象没有实现IComparable接口

Posted kelelipeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这个匿名对象没有实现IComparable接口相关的知识,希望对你有一定的参考价值。

https://docs.microsoft.com/zh-cn/dotnet/api/system.icomparable-1?redirectedfrom=MSDN&view=netframework-4.7.2

中文:必须至少有一个对象实现 IComparable。

序列排序时报这个错误

lstReports.OrderBy(r => new { r.DepartmentName, r.ReportNo }).ToList(); //error occured

在LINQ to SQL/Entity中可以这么用,LINQ 2 Object 不能这么用,因为 new { r.DepartmentName, r.ReportNo } 这个匿名对象没有实现IComparable接口,也无法实现这个接口

 

其实多字段排序用 ThenBy/ThenByDescending 就可以:

lstReports.OrderBy(r => r.DepartmentName).ThenBy(r => r.ReportNo).ToList();

以上是关于这个匿名对象没有实现IComparable接口的主要内容,如果未能解决你的问题,请参考以下文章

C#中的IComparable和IComparer接口

C#中常用接口介绍

C#排序比较

匿名内部类创建线程,简化线程创建代码

VB6 的 IComparable 排序等价物

IComparable和IComparer接口的简析