Как мне получить доступ к отдельным страницам строк с данными

#c# #datatable #rowfilter

#c# #datatable #rowfilter

Вопрос:

У меня есть DataTable с большим результирующим набором.
Эта таблица данных используется для создания нескольких страниц в формате PDF (по одной для каждой строки в таблице данных).

После определенного количества строк генерация PDF-файла занимает слишком много времени, поэтому я хочу предоставить конечному пользователю список гиперссылок для создания отдельных PDF-файлов для каждого набора строк,
т.Е. Установить 1 (строки 0-90), Установить 2 (строки 91-181) и т.д.

Я хочу иметь возможность фильтровать исходную таблицу данных всякий раз, когда я создаю PDF для этого набора строк. Я знаю, что просмотры сетки предоставляют возможность подкачки, но я не хочу без необходимости помещать данные в gridview.

На что я надеюсь, так это на какой-то RowFilter, где я могу сказать:

 _dt.RowFilter = "Rows(0-90)"
  

Кто-нибудь знает о такой функции DataTables (с использованием .NET 3.5)?

Или кто-нибудь может предложить другое решение?
Спасибо

Ответ №1:

Попробуйте это — используйте метод расширения AsEnumerable, затем используйте LINQ для запроса нужных вам строк.

 dataTable.AsEnumerable().Take(90);
  

Страница 2:

 dataTable.AsEnumerable().Skip(90).Take(90);
  

Комментарии:

1. О, это круто, это создает копию исходной таблицы данных или это просто фильтрует исходную таблицу данных? (Я хочу последнее).

2. Просто фильтры — возвращаемый IEnumerable<T> содержит указатели на фактические данные. Из MSDN: «Объект enumerable, возвращаемый методом AsEnumerable, постоянно привязан к DataTable, который его создал. Множественные вызовы метода AsEnumerable вернут несколько независимых запрашиваемых объектов, которые все привязаны к исходной таблице данных.»