将排序值从一个数据表复制到另一个数据库?

时间:2012-10-29 09:54:38

标签: c# database linq sorting dataset

我使用以下代码:

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

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

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

任何帮助将不胜感激。 :)

2 个答案:

答案 0 :(得分: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#函数(当涉及获取数据时)

答案 1 :(得分: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 并更改排序表达式