Как отфильтровать данные из i-й строки в j-ю строку?(С #) - PullRequest
2 голосов
/ 22 апреля 2011

Я знаю, что есть опция RowFilter для фильтрации по значению столбца.Также есть способы выбора первых N строк.Но как мне отфильтровать и получить строки из (я предпочитаю, чтобы они находились в том же DataView dv), скажем, с позиции 10 в позицию 23?

Вот мое требование.У меня есть DataView DV, который имеет 100 строк.У меня есть список с 10 пунктами.Когда я выбираю первый элемент в списке, я хочу, чтобы были загружены первые 10 строк представления данных (загружаемая часть находится в моей программе, оставьте это мне), если я выбираю 2-й элемент в списке, то я хочу, чтобы строки от 11 до 20 были загруженыи так далее.Я могу сделать часть списка, но как выбрать значения dataview на основе номера строки?

Так выглядит мой код:

            DataSet ds = new DataSet();
            DataTable dt = ds.Tables["words"];
            DataView dv = new DataView(dt);

Теперь, как получить dataview из dv на основепозиция строки?

Спасибо.

1 Ответ

3 голосов
/ 22 апреля 2011

Вы можете использовать методы расширения, предоставленные в Linq, чтобы получить строки по позиции.Например:

// just setting up a table for the sample
DataTable table = new DataTable();
table.Columns.Add("ID", typeof(int));

for (int i = 1; i <= 100; i++)
{
    table.Rows.Add(i);
}

// grabbing rows 11 through 20 using Linq
DataTable filtered = table.AsEnumerable().Skip(10).Take(10).CopyToDataTable();

Вышеприведенное работает с .NET 3.5+, C # 3.0+.Для чего-то, что работает в более старых версиях C # и .NET, вы можете сделать это вручную, просто добавив немного кода.

// starting by cloning 'table' (see code above)
DataTable filtered = table.Clone();

int skipRows = 10;
int selectRows = 10;

for (int index = skipRows; 
     index < skipRows + selectRows && index < table.Rows.Count; 
     index++)
{
    filtered.Rows.Add(table.Rows[index].ItemArray);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...