Достичь эквивалента T-SQL ROW_NUMBER+OVER в Linq

Можно ли добиться следующего в Linq?

Я пытаюсь получить список записей, в которых есть столбец, в котором отображается номер строки, начинающийся с 1. Мне нужно отобразить номер строки в элементе управления gridview, чтобы визуально указать пользователю, сколько строк было заполнено. Почему ты спрашиваешь? Пользователь должен ввести точное количество точек данных в эту сетку, чтобы соответствовать «размеру выборки». Это приложение для записи качественных данных...

Может быть, этого можно добиться, используя событие RowDataBound и создав его на лету?

Вот запрос:

SELECT ROW_NUMBER() OVER (ORDER BY [InspDataID]) AS 'RowNumber'
,[InspDataID]
      ,[KeyCharID]
      ,[InspValue]
  FROM [IncomingInsp].[dbo].[InspData]
where [KeyCharID] = 41

Я использую синтаксис SubSonic3 и Linq в проекте. Я все еще изучаю Linq все время.

Я попытался создать представление на основе приведенного выше запроса (за вычетом критериев), НО критерии применяются после того, как все строки выбраны, и мой столбец с номером строки оказывается неверным.

На данный момент я создал хранимую процедуру, которая использует KeyCharID в качестве критерия. Это работает. НО я надеялся добиться этого в Linq. Я видел сообщения, в которых эта функция ROW_NUMBER используется в EF для подкачки страниц, но не понял этого...

Спасибо за вашу помощь,

Джош Блэр


person joshblair    schedule 01.10.2009    source источник


Ответы (1)


Метод LINQ Select() имеет перегрузку, которая дает вам номер строки. Ознакомьтесь с Как добавить ROW_NUMBER в LINQ запрос или объект?

person Justin Grant    schedule 05.10.2009