2011-12-16 2 views
2

У меня есть таблица базы данных с помощью следующей схемы:LINQ запрос - получить следующую строку с соответствующими параметрами

id 
screenshot 
language 
projects_ID 

Я должен написать запрос LINQ, что дано «идентификатор», 'projects_ID' и 'language', возвращают 'id' следующей строки, которая имеет соответствующие 'project_ID' и 'language'.

В английском языке, мой запрос будет:

выбрать следующий «идентификатор» из скриншотов после текущего «ид», где == тока «projects_ID» «projects_ID» и язык == тока «языка '

Можно ли это сделать через LINQ?

Спасибо.

ответ

3

Похоже, вы, вероятно, хотите:

var next = table.Where(item => item.id > lastId && 
           item.projects_ID == projects_ID && 
           item.language == language) 
       .OrderBy(item => item.id) 
       .FirstOrDefault(); 

Или как выражение запроса:

var next = (from item in table 
      where item.id > lastId && 
        item.projects_ID == projects_ID && 
        item.language == language 
      orderby item.id 
      select item).FirstOrDefault(); 

Результат будет null, если нет совпадений (например, если вы уже глядя на последний идентификатор). Это означает, что «следующий» означает «совпадающий элемент с самым низким идентификатором, большим, чем текущий».

+0

Спасибо, Джон, попробуем это сейчас. –

+0

Еще раз спасибо Jon - работает. –

+0

Как мне сделать обратное? Я пробовал использовать LastOrDefault и менял больше, чем меньше, чем я думал, что это будет правильно? –

Смежные вопросы