C# 用C语言对数据表进行多列排序
我有一个Datatable,列名为foldername、documentname。数据如下: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
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 ";