Как ограничить количество строк в таблице данных? - PullRequest
4 голосов
/ 19 января 2011

Я генерирую DataTable ( из данных не-SQL ), а затем использую DataView для фильтрации записей.

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

Я прибег к удалению строк из окончательного набора результатов, как указано в:

                DataView dataView = new DataView(dataTable);
                dataView.RowFilter = String.Format("EventDate > '{0}'", DateTime.Now);
                dataView.Sort = "EventDate";
                dataTable = dataView.ToTable();

                 while (dataTable.Rows.Count > _rowLimit)
                    dataTable.Rows[dataTable.Rows.Count - 1].Delete();

                 return dataTable;

Есть либолее эффективный способ ограничения результатов?

Ответы [ 4 ]

4 голосов
/ 19 января 2011

Вы можете использовать Linq:

Попробуйте изменить код на следующее:

DataView dataView = new DataView(dataTable);
dataView.RowFilter = String.Format("EventDate > '{0}'", DateTime.Now);
dataView.Sort = "EventDate";
dataTable = dataView.ToTable();
while (dataTable.Rows.Count > _rowLimit)
{
    dataTable = dataTable.AsEnumerable().Skip(0).Take(50).CopyToDataTable();
}
return dataTable;

Вам понадобится пространство имен: System.Linq и System.Data

1 голос
/ 19 января 2011

Первое, что нужно попробовать, это НЕ загружать слишком много строк в DataTable.Это возможно?

0 голосов
/ 19 января 2011

Попробуйте скопировать верхние x строки из одной таблицы данных в новую.

dataTable.AsEnumerable().Take(50).CopyToDataTable(newdataTable)

, а затем используйте это.

0 голосов
/ 19 января 2011

Можете ли вы добавить столбец, который будет похож на rowcount 1,2,3 Что-то вроде увеличения при добавлении строк из данных, отличных от SQL, в таблицу данных. Вероятно, после этого вы можете использовать

DataRow[] rows1 = dTable.Select(" RowIncrement < 50", "EventDate ASC");

RowIncrement - это столбец, который будет выглядеть как ROWNUM

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...