2009-11-10 2 views
1

я есть таблицаLINQ SQL, где ближе всего к числу

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

выберите Id, где количество находится ближе всего к 18 она должна возвращать строку 4, который является 19

как я пишу это в LINQ и TSQL ? благодаря

ответ

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

К сожалению, - я думаю, что вы имеете в виду Math.abs (18 - q.Number). +1 хотя. –

+0

Что делать, если это тип даты? – scrippie

+0

Он будет работать, за исключением того, что вы должны получить TotalSeconds или подобное из возвращаемого времени. –