我将尝试为嵌套属性使用OrderBy,但是我无法使其正常工作。
模型:
public class TPRenewalCycle
{
public virtual ICollection<TPCaseEvent> CaseEvents { get; set; }
}
public class TPCaseEvent
{
public DateTime? DueDate { get; set; }
}
方法:
List<TPRenewalCycle> cycles = renewalCycles
var nextRenewalCycle = cycles.OrderBy(cycle => cycle.CaseEvents.OrderBy(caseEvent => caseEvent.DueDate)).FirstOrDefault();
这个错误提示是:
至少一个对象必须实现 IComparable 接口。
这是由于 nullable DateTime
或 CaseEvents
引起的吗?我该如何解决?
在 T-SQL 中,可以这么做:
SELECT CE.DueDate
FROM TPRenewalCycles RC
INNER JOIN TPCaseEvents CE on (CE.BusinessSystemId = RC.BusinessSystemId and CE.CaseId = RC.CaseId and CE.Action = RC.Action and CE.Cycle = RC.Cycle)
Order by CE.DueDate
cycles.OrderBy(cycle => cycle.CaseEvents.OrderBy(...))
的意思是你尝试按照内部 OrderBy 的结果,即IEnumerable<>
进行排序。就像“按学生的姓氏对班级进行排序”一样。 - H H