Как отсортировать dataset.table [0] и получить топ 10? - PullRequest
1 голос
/ 13 сентября 2009

Я добавляю столбец с автоинкрементом (называемый "rowNum") к моей таблице, и он работает хорошо, после этого я использую этот код для сортировки строк с данными:

DataView dv = MyDataSet.Tables[0].DefaultView;
dv.Sort = "columnName DESC";

где columnName - один из моих столбцов (не с автоинкрементом).

Теперь проблема в следующем: когда я хочу получить первые 10 строк, я использую этот код:

dv.RowFilter = "rowNum <= 10";

Результат не тот, который я хочу, потому что когда я делаю dv.Sort, rowNum перемешивается (становится в неправильном порядке).

Как я могу получить 10 лучших строк после сортировки строк?

Ответы [ 2 ]

2 голосов
/ 13 сентября 2009

Я предпочитаю LINQ для подобных вещей. Вместо этого я использую System.Linq и пишу:

var rows = MyDataSet.Tables[0].AsEnumerable()
   .OrderByDescending(r => r["columnName"]) 
   .Take(10);

, а затем просто привязать к "строкам".

0 голосов
/ 19 марта 2015

если добавить .Take (10) в строке AsEnumerable () не работает. но если добавить вторую строку, как указано ниже, работает.

var Rows = (from row in dt.AsEnumerable() 
orderby row["CostPerVeteran"] descending
select row);

dtChart = Rows.Take(10).CopyToDataTable();
...