使用列号而非列名进行DataTable排序

5

我希望能够按照列索引而不是列名对数据表进行排序。我可以使用SQL的ORDER BY 2ORDER BY 3 DESC, 4 DESC来实现这一点。但由于数据库性能问题,我想通过使用CPU性能来完成。

那么我该如何在C#中实现呢?

以下示例对我无效:

sortColumn = "3 desc, 4 desc";
dt.DefaultView.Sort = sortColumn.ToString(); 
dt = dt.DefaultView.ToTable();

使用列索引而不是列名进行排序通常是不好的做法。如果有人向基础表或查询中添加了一列,则代码可能会按不同的列进行排序。使用列名仍将按预期工作。 - Mark Roworth
2个回答

7
尝试这种方法:
dt.DefaultView.Sort = sortColumn; 
dt = dt.DefaultView.ToTable();

与其使用

sortColumn = "3 desc, 4 desc";

你可以使用

sortColumn = dt.Columns[3].ColumnName + " DESC," + dt.Columns[4].ColumnName + " DESC";

这样做可以帮助你更好地排序表格。


就像我说的,有时候我可能会有sortColumn = "3 desc, 4 desc",因此我并不总是只使用一个索引。 - Berkay Turancı
2
你尝试过使用 dt.Columns[3].ColumnName + " DESC," + dt.Columns[4].ColumnName + " DESC"; 吗? - Arsen Mkrtchyan

1

dt.DefaultView.Sort = dt.Columns[index].ColumnName + " DESC";

的意思是将数据表 dt 按照指定列的降序排序。其中,index 是指定列的索引,ColumnName 是指定列的名称。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接