linq sql最接近数字

我有一张桌子

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

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

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

 (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()