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

时间:2013-04-20 12:30:57

标签: c# asp.net sorting data-binding datatable

我有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

2 个答案:

答案 0 :(得分:1)

您可以使用TagTagId列替换TagName列吗?这将使您的数据结构有意义,反过来使其使用(例如排序)是有意义的。如果没有,我认为这应该有效:

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

答案 1 :(得分:0)

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