2014-01-03 4 views
1

У меня есть таблица данных, как этотSql сервер выбрать первое меньшее значение

column1 Column2 Column3 Column4 
    2  3  10   asdfas 
    2  3  12   asdfas 
    2  3  15   asdfas 
    2  3  17   asdfas 

я взял их в списке ListData

Listdata.Where(x => x.Column3 < 17).FirstOrDefault(); 

Это возвращает первую строку, как я должен сделать это вернуть второй последняя строка. т.е. с колонка3 15

+1

Вопрос может быть яснее - вторая последняя строка, из тех, которые удовлетворяют колонка3 <17, будет 12, не 15. Вы вероятно, означало последнюю строку, удовлетворяющую условию. Правильно? –

+1

Последний при заказе по каким критериям? Если не используется оператор OrderBy, сервер будет возвращать строки без определенного порядка. Как правило, это будет порядок, который они сохраняют на диске. Если используется кластеризованный индекс, они возвращаются в этом порядке –

ответ

2
Listdata 
    .Where(x => x.Column3 < 17) 
    .OrderByDescending(x => x.Column3) 
    .Take(2) 
    .Last(); 
+0

@andmor thaks он просто набросился на меня, задав вопрос – Rex

0
Listdata.Where(x => x.Column3 < 17) 
.Reverse() 
.Skip(1) 
.First(); 
0
Listdata.OrderByDescending(x => x.Column3).Skip(1).Take(1); 

ИЛИ

Listdata.Reverse().Skip(1).Take(1); 
Смежные вопросы