linq sql最接近数字

时间:2009-11-10 05:26:51

标签: c# linq tsql

我有一张桌子

Id Number
1   9
2   10
3   12
4   19
5   20

选择ID最接近18的ID 它应该返回第4行,即19

我如何在linq和tsql中写这个?感谢

1 个答案:

答案 0 :(得分:9)

(from q in table
 orderby Math.Abs(18 - q.Number)
 select q).FirstOrDefault()

SELECT TOP 1
    *
FROM
    table
ORDER BY
    ABS(10 - Number)

和日期时间

var nearTo = new DateTime(1999, 12, 31);
(from q in table
 orderby Math.Abs((nearTo - q.Date).TotalSeconds)
 select q).FirstOrDefault()