Подтвердить что ты не робот

Как выбрать верхние n строк из datatable/dataview в ASP.NET

Как выбрать верхние 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;
}
4b9b3361

Ответ 1

В рамках 3.5, dt.Rows.Cast<System.Data.DataRow>().Take(n)

В противном случае, как вы упомянули

Ответ 2

Я только что использовал ответ Midhat, но добавил CopyToDataTable() в конец.

Нижеприведенный код является расширением для ответа, который я использовал для быстрого включения некоторого пейджинга.

int pageNum = 1;
int pageSize = 25;

DataTable dtPage = dt.Rows.Cast<System.Data.DataRow>().Skip((pageNum - 1) * pageSize).Take(pageSize).CopyToDataTable();

Ответ 3

myDataTable.AsEnumerable().Take(5).CopyToDataTable()

Ответ 4

Вы можете изменить запрос. Если вы используете SQL Server сзади, вы можете использовать запрос Select top n для таких нужд. Текущий реализует выборку всех данных из базы данных. Выбор только необходимого количества строк также даст вам повышение производительности.

Ответ 5

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;
    }