数据表排序不起作用c#

时间:2013-03-21 18:40:14

标签: asp.net c#-4.0

我有一组像下面的模式


  

名称:颜色:百分比:

我需要按百分比的描述顺序对此数据进行排序

现在我正在使用数据表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";

当相同的数字[百分比]重复多次时问题就出现了 任何想法错误在哪里?

2 个答案:

答案 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";