如果您不是绝对必须在服务器端进行查询,那么以下伪代码方法将起作用:
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();