简单
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属性的项目。
需要链接方面的帮助。
答案 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
没有里程碑,这两个都会失败。