8

動的テーブルを作成しました

 DataTable date = new DataTable();
 date.Columns.Add("date1");

列名「date1」に日付を次のように入力しました

date1(Column name)
05-07-2013
10-07-2013
09-07-2013 
02-07-2013 

動的テーブルを埋めました

この動的テーブル データを昇順または降順で並べ替えたい

For eg:

date1(Column name)
02-07-2013
05-07-2013
09-07-2013 
10-07-2013 
4

4 に答える 4

12

これは、元のデータ テーブルでは実行できません。ただし、ソートされた新しいものを作成できます。

DataView view = date.DefaultView;
view.Sort = "date1 ASC";
DataTable sortedDate = view.ToTable();
于 2013-07-10T13:34:02.177 に答える
4

メソッドを使用できますDataTable.Select(filterExpression, sortExpression)

フィルター条件に一致するすべての DataRow オブジェクトの配列を、指定された並べ替え順序で取得します。

date.Select("", "YourColumn ASC");

また

date.Select("", "YourColumn DESC");

DataView代わりに、 like;を使用できます。

DataView view = date.DefaultView;
view.Sort = "YourColumn ASC";
DataTable dt = view.ToTable();
于 2013-07-10T13:31:35.843 に答える
1

私はここで私の 2 セントを与えるだろうと思った。時間と計算パフォーマンスが必要なソート アルゴリズムを使用する代わりに、データ オブジェクトにデータを追加する方法を逆にしてみませんか。

これはすべてのシナリオでうまくいくわけではありませんが、私自身のシナリオでは完全にうまくいきました。

アイテムを昇順でリストするデータベースがありましたが、使いやすさのために、最新の入力がリストの下部ではなく上部に表示されるように、人々がデータを表示できる方法 (DESC) を逆にする必要がありました.

そのため、for ループを変更したので、0 から上向きに作業するのではなく、データテーブルの長さから開始し (オーバーフローを停止するには -1)、>= から 0 になると停止します。

private Dictionary<string, string> GetComboData(string table, int column, bool id, int idField = 0)
{
    SqlClass sql = new SqlClass(database);
    Dictionary<string, string> comboBoxData = new Dictionary<string, string>();

    if (sql.connectedToServer)
    {
        sql.SelectResults(SQLCommands.Commands.SelectAll(table));

        for (int i = sql.table.Rows.Count-1; i >= 0; i--)
        {
            string tool = sql.table.Rows[i].ItemArray.Select(x => x.ToString()).ToArray()[column];
            string ID = sql.table.Rows[i].ItemArray.Select(x => x.ToString()).ToArray()[idField];

            comboBoxData.Add(ID, tool);
        }

    }

    return comboBoxData;
}
于 2015-08-05T08:12:09.407 に答える