我有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
答案 0 :(得分:1)
您可以使用Tag
和TagId
列替换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
并将其用于您的代码。