запрос, который получает только записи, необходимые для страницы, используя Linq - не выбирает запись в зависимости от размера страницы - PullRequest
1 голос
/ 26 июля 2010

Я использовал этот запрос для извлечения Записи таблицы данных на основе размера страницы.

   IEnumerable<DataRow> query1 = from row in dt.AsEnumerable().Take(page_size).Skip(offset) select row;

Datatable boundTable = query1.CopyToDataTable ();

при первом открытиисмещение будет = 0;он дает 10 записей,

в следующий раз, когда я передаю смещение как 10, чтобы получить следующие десять записей, но он не дает никаких значений перечисления.при отображении сообщения «Перечисление не дало результатов»

, но в базе данных, к которой я обращаюсь, содержится около 1000 записей.что я тут сделал ...

Ответы [ 2 ]

3 голосов
/ 26 июля 2010

Вы используете Skip и Take в неправильном порядке. Попробуйте это:

IEnumerable<DataRow> query = dt.AsEnumerable()
                               .Skip(offset)
                               .Take(pageSize);

(Я удалил синтаксис выражения запроса, так как он здесь не оказывал вам никакой пользы.)

Вы делали Take, затем Skip - поэтому вы говорили что-то вроде: «Дайте мне первые десять записей, а затем переходите к одиннадцатой из этих десяти». Это явно не даст вам никаких результатов:)

Выше сказано: «Перейдите к одиннадцатой записи, затем дайте мне первые десять оставшихся записей».

1 голос
/ 26 июля 2010

Измените порядок вашего Пропустить и взять.Вы просите запрос взять 10 из набора результатов, а затем пропустить 10, не оставляя ни одного.

...