如何对列值的一部分应用数据表排序

本文关键字:一部分 应用 数据表 排序 | 更新日期: 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ÆGG

0ÆCC

15ÆBB

10ÆAA

不像这样(不按TagId排序)

标签

0ÆCC

10ÆAA

15ÆBB

20ÆGG

如何对列值的一部分应用数据表排序

能否将Tag列替换为TagIdTagName列?这将使您的数据结构变得有意义,进而使使用它(例如排序)变得有意义。如果没有,我认为这应该工作:

var ordered = dt.AsEnumerable().OrderByDescending(
 x => x.Field<string>("Tag").Substring(x.Field<string>("Tag").IndexOf("Æ") + 1));

如果您的datatable中有原始列,那么您可以使用这些列进行排序。
否则,您将不得不遍历data-table的每一行,并创建一个新的data-table,并将其用于您的代码。