2014-09-30 71 views
1

在我的數據庫中,我有一組具有值的時間點。該組看起來像:實體框架在日期前後選擇記錄

public class Point 
{ 
    public int Id {get;set;} 
    public int Count { get; set; } 
    public virtual DateTime RegistrationTime { get; set; } 
} 

在此我有一個日期時間點列表。 Foreach日期時間點我想要兩個最接近的時間點(1之前和1之後)。我可以用我的時間點上的foreach來做到這一點,但這會導致很多疑問。有沒有辦法執行一個查詢在1去與實體框架?

+0

是否有在數據庫中的'DateTime'列的索引?該表中有多少條記錄?很多查詢並不一定是錯誤的 - EF中的一個大查詢可能會導致內存不足異常。 – Ofiris 2014-09-30 12:30:21

+0

在這種情況下,我們需要1000個不同的時間點,這導致2000個不同的查詢。 – Patrick 2014-09-30 12:34:06

回答

0

像這樣的事情

點comparePoint =你有什麼...

var pointBefore = db.Points.Where(p=>p.RegistrationTime < comparePoint.RegistrationTime).OrderByDescending(p=>p.RegistrationTime).FirstOrDefault(); 

var pointAfter = db.Points.Where(p=>p.RegistrationTime > comparePoint.RegistrationTime).OrderBy(p=>p.RegistrationTime).FirstOrDefault();