C# 使用linq在一行中获得最大+最小值
如何更改此方法,使其只在一行中使用Maxt.StartTime和Mint.StartTime,如下所示C# 使用linq在一行中获得最大+最小值,c#,linq,entity-framework,C#,Linq,Entity Framework,如何更改此方法,使其只在一行中使用Maxt.StartTime和Mint.StartTime,如下所示 public IQueryable<Timetable> GetTimetables() { return from t in _entities.Timetables select t; } /我不知道这是否适用于实体框架,但对于linq,它是这样的 public IQueryable<Timetable&
public IQueryable<Timetable> GetTimetables()
{
return from t in _entities.Timetables
select t;
}
/我不知道这是否适用于实体框架,但对于linq,它是这样的
public IQueryable<Timetable> GetTimetables()
{
return from t in _entities.Timetables
select new {maxt = Max(t.StartTime), mint = Min(t.StartTime)};
}
在我的头顶上写着:未经测试和假定的开始时间不可为空:
public class TimetableWithMaxMin
{
public Timetable Timetable { get; set; }
public DateTime Max { get; set; }
public DateTime Min { get; set; }
}
public IQueryable<TimetableWithMaxMin> GetTimetables()
{
return from t in _entities.Timetables
select new TimetableWithMaxMin
{
Timetable = t,
Max = _entities.Timetables.Max(t => t.StartTime),
Min = _entities.Timetables.Min(t => t.StartTime)
};
}
当StartTime为空时,这会变得相当复杂。似乎存在一些语法问题。她忘记了t=>,就像t=>t.StartTime一样。请参见t=>用于lambda,这类似于GetTimeTables。Selectt=>new{maxt=maxt.StartTime,mint=mint.StartTime}Max和Min都需要一个表达式。见我贴的链接,Omu。