2013-03-21 4 views
0

я есть группа значений, как показано ниже рисункаDatatable сортировка не работает с #


Имя: Цвет: процент:

мне нужно сортировать эти данные в НАР порядке процентного

теперь я использую данных таблицы DefaultView метод сортировки

//declare columns 
DataTable dt = new DataTable(); 
dt.Columns.Add("name"); 
dt.Columns.Add("color"); 
dt.Columns.Add("percentage"); 

//adding rows 
DataRow dr = dt.NewRow(); 
dr["name"]="a"; 
dr["color"]="red"; 
dr["percentage"]="10.1"; 
dt.Rows.Add(dr); 

//sorting 
dt.DefaultView.Sort="percentage desc"; 

проблема возникает, когда одинаковое число [в процентах] повторяется больше раз любая идея, где ошибка?

+3

Если процентный столбец является строкой, он будет сортировать его как строку, а не процентное значение. – jiiri

ответ

2

Изменить этот код:

dt.Columns.Add("percentage"); 

к этому:

dt.Columns.Add("percentage", typeof(double)); 
1

Как несколько человек указали, потому что вы добавили процент в виде строки («10,1») он будет отсортирован как строка. Это означает, что, поскольку вы сортируете по убыванию, «2» будет отображаться над «10.1» в вашем роде. Это потому, что строковые значения сравниваются по символу, а «2» - до «1» в нисходящем алфавитном порядке.

Это проблема, о которой вы говорите? Если это так, то любое другое предлагаемое решение будет работать для вас.

Вы также сказали, что проблема возникает, когда одно и то же число [в процентах] повторяется больше раз. «Если вам нужен дополнительный столбец сортировки, который влияет на порядок записей с тем же значением столбца первичной сортировки (percentage), вы необходимо указать один:

dt.DefaultView.Sort="percentage desc, name asc, color asc"; 
Смежные вопросы