2009-11-10 73 views
1

一行分鐘我怎樣才能改變這種方法,因此也只有在下面一行用它返回最大值(t.StartTime)和Min(t.StartTime)?獲得最大的+與LINQ

public IQueryable<Timetable> GetTimetables() 
    { 
     return from t in _entities.Timetables 
       select t; 
    } 

/M

回答

1

了我的頭頂部(讀:未經測試)並假設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爲nulla時,這會變得相當複雜BLE。

0

我不知道這是否適用於實體框架,但使用LINQ它像這樣

public IQueryable<Timetable> GetTimetables() 
    { 
     return from t in _entities.Timetables 
       select new {maxt = Max(t.StartTime), mint = Min(t.StartTime)}; 
    } 
+0

好像有一些語法問題 – 2009-11-10 13:29:44

+0

他忘了't =>',就像't => t.StartTime'一樣。請參閱http://msdn.microsoft.com/en-us/vcsharp/aa336747.aspx#maxSimple – 2009-11-10 14:10:31

+0

t =>用於lambda表達式,類似於GetTimeTables()。Select(t => new {maxt = Max (t.StartTime),mint = Min(t.StartTime)}) – Omu 2009-11-10 15:02:32