Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用C语言对数据表进行多列排序_C#_Sorting_Datatable_.net 2.0 - Fatal编程技术网

C# 用C语言对数据表进行多列排序

C# 用C语言对数据表进行多列排序,c#,sorting,datatable,.net-2.0,C#,Sorting,Datatable,.net 2.0,我有一个Datatable,列名为foldername、documentname。数据如下: FolderName DocumentName Folder1 HR[D] Document Folder1 ___----' Folder1 Asp_example.pdf Folder2 SD Folder3 Heavy_weight Folder3 Accesorial Services 如何在.Net Framework 2.0中基于Folde

我有一个Datatable,列名为foldername、documentname。数据如下:

FolderName  DocumentName
Folder1     HR[D] Document
Folder1     ___----'
Folder1     Asp_example.pdf
Folder2     SD
Folder3     Heavy_weight
Folder3     Accesorial Services
如何在.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;

 }

你试过DataView.Sort吗

dt.DefaultView.RowFilter = "FolderName , DocumentName ASC";
dt = dt.DefaultView.ToTable();
试试看。它将首先为FolderName排序,然后为DocumentName排序


如果需要将其发送到屏幕上的某个组件,可以执行与使用DataTable相同的操作。

如果要使用DataTable绑定dgv,可以使用执行以下操作:

DataTable DTTable=DataTable dgv.DataSource; dtable.DefaultView.Sort=

或者检查以下内容:


谢谢

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

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

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

您提到这些信息是从数据库获得的,那么为什么不在SQL查询中使用ORDERBY子句呢?否则,您是否尝试过使用DataView而不是DataTable?非常感谢,它成功了。对于一个简单的代码行,我写了一个愚蠢的代码不要忘了投票并标记为正确答案。这估计我们会帮助越来越多的人。这个ans对仍然没有标记为asnwerYeah的OP bt有用。当这种情况发生时,我有点难过,但至少我知道这有帮助。@AndréSilva您的解决方案是只对字符串类型的列进行排序,假设我有一个列,比如colA,它的字符串值为1.23、11.34和2.34。然后它会将其分类为1.23、11.34、2.34,这是错误的。谢谢——这是唯一对我有效的答案。关键是拥有DataTable of i=viewFI.ToTable;大多数其他答案都省略了。
oDataSet.Tables[0].DefaultView.Sort = "Column1 ASC ";