如果你沒有絕對要做的查詢服務器端,然後下面的僞代碼方法將工作:
foreach value in the data set
let distance = absolute value of (data point - target data value)
sort by distance, ascending
choose first
在C# ,您可以使用DateTime.Substract
方法輕鬆計算時間間隔,例如,獲取返回的TimeSpan
對象的Days
屬性的絕對值。
我不太專家SQL日期操作,但我相信你可以做同樣的事情排序服務器端的類似的東西:
select * from table, abs(Datediff(datecolumn.table, sysdatetime)) as distance
order by distance
,然後使用第一個值。
對不起,我只注意到你想讓它在LINQ格式,它可以讓你把服務器端和客戶端的工作 - 與此類似:
(from q in datacontext.Table
let distance = Math.Abs(q.Date.Subtract(DateTime.Today).Ticks)
orderby distance
select q).First();
最近的總是在您當前的日期之前?如果當前日期是2012-11-24 01:10:00,輸出應該如何? – rene
如果有關係呢? –
它是有用的:http://stackoverflow.com/questions/1705799/linq-sql-where-closest-to-number –