linq sql最接近数字

scr*_*pie 1 c# t-sql linq

我有一张桌子

Id Number
1   9
2   10
3   12
4   19
5   20
Run Code Online (Sandbox Code Playgroud)

选择Id,其中Number最接近18,它应返回第4行,即19

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

Joh*_*zen 9

(from q in table
 orderby Math.Abs(18 - q.Number)
 select q).FirstOrDefault()
Run Code Online (Sandbox Code Playgroud)

SELECT TOP 1
    *
FROM
    table
ORDER BY
    ABS(10 - Number)
Run Code Online (Sandbox Code Playgroud)

并为日期时间

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