Nested Collection的OrderBy Parent对象

时间:2012-06-04 19:31:31

标签: linq

简单

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属性的项目。

需要链接方面的帮助。

1 个答案:

答案 0 :(得分:10)

听起来你可能想要

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

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

当然,如果里程碑符合规定,您可以使用:

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

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