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 に答える