我有一组像下面的模式
名称:颜色:百分比:
我需要按百分比的描述顺序对此数据进行排序
现在我正在使用数据表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";
当相同的数字[百分比]重复多次时问题就出现了 任何想法错误在哪里?
答案 0 :(得分:2)
更改此代码:
dt.Columns.Add("percentage");
到此:
dt.Columns.Add("percentage", typeof(double));
答案 1 :(得分:1)
正如多人指出的那样,因为您将百分比添加为字符串(“10.1”),它将被排序为字符串。这意味着,由于您按降序排序,因此“2”将出现在您排序的“10.1”之上。这是因为字符串值逐字符进行比较,“2”以降序字母排序在“1”之前。
这是你在说的问题吗?如果是这样,其他任何提议的解决方案都适合您。
您还说“当相同的数字[百分比]重复多次时问题就出现了”如果您想要一个二级排序列,它会影响具有相同主排序列值的记录的顺序(percentage
),你必须指定一个:
dt.DefaultView.Sort="percentage desc, name asc, color asc";