6

简单的

public class TimeLine
{
  public String Name {get;set}
  public List<Milestone> MilesStones {get;set}
}

public class Milestone
{
  public String Name {get;set}
  public DateTime Time {get;set}
}

我试过了: from t in DataAccess.TimelineCollection.OrderBy(c=>c.MilesStones.OrderBy(z=>z.MilestoneDate)) select t;但得到一个错误“至少一个对象必须实现 IComparable”。

我需要按 Milestone.Time 订购 TimeLine。列表中的第一个项目将是 Milestone 集合中具有最早 Time 属性的项目。

需要链接帮助。

4

1 回答 1

12

听起来你可能想要

var query = DataAccess.TimelineCollection
                      .OrderBy(t => t.MileStones.Min(m => m.Time));

换句话说,对于每个TimeLine,找到最早的里程碑,并将其用于排序。

当然,如果里程碑是有序的,您可以使用:

var query = DataAccess.TimelineCollection
                      .OrderBy(t => t.MileStones.First().Time);

TimeLine如果任何一个没有里程碑,这两个都将失败。

于 2012-06-04T19:35:46.217 回答