至少有一个对象必须实现IComparable

时间:2011-06-24 11:43:18

标签: c# linq-to-objects

var listair = empcon.OrderBy(x => x.CustomerConnection.OrderBy(y => y.Id)).ToList();

当我使用此语句时,我得到异常“至少有一个对象必须实现IComparable”

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:26)

当我写错了时,我的查询出现了这个问题:

IEnumerable<OrgRelation> relations = from r in tree.OrgRelations
                                                 orderby r.ParentUnit, r.ChildUnit
                                                 select r;

这是因为父和子单元都是与此OrgRelation实体相关的OrgUnit对象。我需要的是不是通过对象来命令,而是通过我真正想要排序的对象的属性来命令。当我添加“.Name”时,它起作用了。

IEnumerable<OrgRelation> relations = from r in tree.OrgRelations
                                                 orderby r.ParentUnit.Name, r.ChildUnit.Name
                                                 select r;

答案 1 :(得分:8)

为CustomerConnection和empcon包含的对象的类型实现IComparable。如果他们没有实施IComparable,则无法按顺序执行订单。