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();

对数据表中的值进行排序。然后删除该数据表并将已排序的行填充到具有相同名称的数据表中。谁能告诉我这个过程的效率有多高。IE。性能缺点???

如果有更好的方法来实现这一点;请告诉我。

任何帮助都感激不尽。:)

4

2 回答 2

4

为什么不直接在数据库中排序?那总是会更有效率。

IE

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 回答