使用C#按多列对数据表进行排序

时间:2012-12-27 09:21:45

标签: c# sorting datatable .net-2.0

我有一个数据表,其中包含名为foldernamedocumentname的列。数据如下:

FolderName  DocumentName
Folder1     HR[D] Document
Folder1     ___----'
Folder1     Asp_example.pdf
Folder2     SD
Folder3     Heavy_weight
Folder3     Accesorial Services

如何alphabetically根据.Net Framework 2.0中的FolderName对DocumentName进行排序。

我们尝试过的解决方案如下,但由于包含超过1200000条记录,因此需要花费太多时间。

int counter=0;

while (counter < searchDT.Rows.Count){
   string FolderName = Convert.ToString(searchDT.Rows[counter]["Folder Name"]);

   string exp = "[Folder Name] like '" + FolderName + "'";

   if (FolderName.Contains("%") || FolderName.Contains("_") || FolderName.Contains("[]") ||      FolderName.Contains("'"))

      exp = "[Folder Name] like '" + EscapeLikeValue(FolderName) + "'";

   string sortExpression = "[Document Name] ASC";

   DataRow[] drfoldername = searchDT.Select(exp, sortExpression);

   foreach (DataRow row in drfoldername)
     drfoldernameDT.ImportRow(row);

   counter += drfoldername.Length;

 }

5 个答案:

答案 0 :(得分:38)

        DataTable dt= new DataTable();

        DataView dv = new DataView(dt);
        dv.Sort = "FolderName, DocumentName ASC";

尝试一下。它将首先对FolderName进行排序,然后对DocumentName进行排序。

如果您需要将其发送到屏幕中的组件,您可以像使用DataTable一样。

答案 1 :(得分:2)

你试过DataView.Sort吗?

dt.DefaultView.RowFilter = "FolderName , DocumentName ASC";
dt = dt.DefaultView.ToTable();

答案 2 :(得分:2)

以下是我解决这个问题的方法:

Datatable FI = new Datatable();
DataView viewFI = new DataView(FI);
viewFI.Sort = "ServiceDate, ServiceRoute";
DataTable OFI= viewFI.ToTable();

答案 3 :(得分:0)

如果使用数据表绑定dgv,可以使用以下操作:

DataTable dtable =(DataTable)dgv.DataSource; dtable.DefaultView.Sort =

或者检查一下:

http://www.codeproject.com/csharp/datagridsort.asp

谢谢

答案 4 :(得分:0)

您可以使用

oDataSet.Tables[0].DefaultView.Sort = "Column1 ASC ";