#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 вернут несколько независимых запрашиваемых объектов, которые все привязаны к исходной таблице данных.»