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

当相同的数字[百分比]重复更多次时,问题就来了,知道错误在哪里吗?

4

2 回答 2

2

更改此代码:

dt.Columns.Add("percentage");

对此:

dt.Columns.Add("percentage", typeof(double));
于 2013-03-21T18:45:24.227 回答
1

正如多人指出的那样,因为您将百分比添加为字符串(“10.1”),它将被排序为字符串。这意味着,由于您按降序排序,因此“2”将出现在您的排序中的“10.1”之上。这是因为字符串值是逐个字符比较的,并且“2”在字母降序排序中位于“1”之前。

这就是你说的问题吗?如果是这样,其他任何一种建议的解决方案都对您有用。

您还说“当相同的数字 [百分比] 重复更多次时,问题就来了percentage

dt.DefaultView.Sort="percentage desc, name asc, color asc";
于 2013-03-21T19:49:55.947 回答