Ответ 1
В рамках 3.5, dt.Rows.Cast<System.Data.DataRow>().Take(n)
В противном случае, как вы упомянули
Как выбрать верхние n строк из datatable/dataview в ASP.NET? В настоящее время я использую следующий код, передавая таблицу и количество строк для получения записей. Есть ли лучший способ?
public DataTable SelectTopDataRow(DataTable dt, int count)
{
DataTable dtn = dt.Clone();
for (int i = 0; i < count; i++)
{
dtn.ImportRow(dt.Rows[i]);
}
return dtn;
}
В рамках 3.5, dt.Rows.Cast<System.Data.DataRow>().Take(n)
В противном случае, как вы упомянули
Я только что использовал ответ Midhat, но добавил CopyToDataTable()
в конец.
Нижеприведенный код является расширением для ответа, который я использовал для быстрого включения некоторого пейджинга.
int pageNum = 1;
int pageSize = 25;
DataTable dtPage = dt.Rows.Cast<System.Data.DataRow>().Skip((pageNum - 1) * pageSize).Take(pageSize).CopyToDataTable();
myDataTable.AsEnumerable().Take(5).CopyToDataTable()
Вы можете изменить запрос. Если вы используете SQL Server сзади, вы можете использовать запрос Select top n
для таких нужд. Текущий реализует выборку всех данных из базы данных. Выбор только необходимого количества строк также даст вам повышение производительности.
public DataTable TopDataRow(DataTable dt, int count)
{
DataTable dtn = dt.Clone();
int i = 0;
foreach (DataRow row in dt.Rows)
{
if (i < count)
{
dtn.ImportRow(row);
i++;
}
if (i > count)
break;
}
return dtn;
}