0

私は次のコードを使用しています:

        EmpInfoDS = new DataSet();

        con.Open(); // My connection name

        string sqlRecords = "Select * FROM tbl_EmpInfo";
        EmpInfoDA = new OleDbDataAdapter(sqlRecords, con);
        EmpInfoDA.Fill(EmpInfoDS, "EmpInfo");

            var sortedRows = (from myRow in EmpInfoDS.Tables["EmpInfo"].AsEnumerable()
                             orderby myRow["EmpID"] ascending
                             select myRow).ToArray();

            EmpInfoDS.Tables.Remove("EmpInfo");
            DataTable EmpInfo = sortedRows.CopyToDataTable();
            EmpInfo.TableName = "EmpInfo";
            EmpInfoDS.Tables.Add(EmpInfo); 

        con.Close();

データテーブルの値をソートします。次に、そのデータテーブルを削除し、ソートされた行を同じ名前のデータテーブルに入力します。このプロセスがどれほど効率的か誰か教えてください。すなわち。パフォーマンスの欠点???

これを達成するためのより良い方法がある場合; 教えてください。

どんな助けでも大歓迎です。:)

4

2 に答える 2

4

データベースで注文してみませんか?それは常にはるかに効率的です。

すなわち

EmpInfoDS = new DataSet();
con.Open(); // My connection name
string sqlRecords = "Select * FROM tbl_EmpInfo ORDER BY EmpID";
EmpInfoDA = new OleDbDataAdapter(sqlRecords, con);
EmpInfoDA.Fill(EmpInfoDS, "EmpInfo");
con.Close();

常にデータベースに行わせた作業をさせてください。並べ替えはデータベース関数であり、C#関数ではありません(データのフェッチに関して)

于 2012-10-29T10:03:23.573 に答える
1

あなたが試すことができます

    EmpInfoDS.Tables["EmpInfo"].Sort = "EmpID ASC";
    DataTable EmpInfo = EmpInfoDS.Tables["EmpInfo"].DefaultView.ToTable();
    EmpInfoDS.Tables.Add(EmpInfo);
    //To remove sorting  --- EmpInfoDS.Tables["EmpInfo"].Sort = string.Empty;

このアプローチでは、古いDataTableを残して、並べ替え式を変更できます

于 2012-10-29T10:16:54.247 に答える