如何对列值的一部分应用数据表排序
本文关键字:一部分 应用 数据表 排序 | 更新日期: 2023-09-27 18:10:11
我有一个DataTable
。我想使用c# Sort
函数对列进行排序。但我有多个值进入列(与分隔符- Æ)。
所以我真的想对列的特定部分应用排序。
举例—我的DataTable
列为Tag
。列Tag
有两个值——TagId + TagName
现在我想只对TagName
应用排序。
我该怎么办?
——示例我的DataTable
dt
标签10ÆAA -------->(
TagId
ÆTagName
)15ÆBB -------->(
TagId
ÆTagName
)0ÆCC -------->(
TagId
ÆTagName
)20ÆGG -------->(
TagId
ÆTagName
)
代码-
dt.DefaultView.Sort = "Tag DESC";
//——我尝试了这个代码,但是它对整个列应用排序
我想要这样的结果(根据TagName
排序)
标签20ÆGG0ÆCC
15ÆBB 10ÆAA
不像这样(不按TagId
排序)
标签0ÆCC
10ÆAA 15ÆBB 20ÆGG
能否将Tag
列替换为TagId
和TagName
列?这将使您的数据结构变得有意义,进而使使用它(例如排序)变得有意义。如果没有,我认为这应该工作:
var ordered = dt.AsEnumerable().OrderByDescending(
x => x.Field<string>("Tag").Substring(x.Field<string>("Tag").IndexOf("Æ") + 1));
如果您的datatable
中有原始列,那么您可以使用这些列进行排序。
否则,您将不得不遍历data-table
的每一行,并创建一个新的data-table
,并将其用于您的代码。