我有一个包含以下数据行的列的gridview:
1
2a
2b
6
8a
10a
列的标题有一个sortExpression,所以我可以点击进行排序
如果我对这些数据进行排序,我会按此顺序获取:
1
10a
2a
2b
6
8a
..由于1
,10a行出现了我希望它按数字排序,但我的值是字符串。 数据需要按编号排序,然后按结尾处的字母排序(如果有字母)
如何从数据源中撤回数据? 请注意,这是在gridview中。
答案 0 :(得分:3)
如果您有一个字符串列表,那么您可以使用自定义比较对它们进行排序。这是一些代码:
public static void NumericalSort(List<string> l)
{
Regex rgx = new Regex("([^0-9]*)([0-9]+)");
l.Sort((a, b) =>
{
var ma = rgx.Matches(a);
var mb = rgx.Matches(b);
for (int i = 0; i < ma.Count; ++i)
{
int ret = ma[i].Groups[1].Value.CompareTo(mb[i].Groups[1].Value);
if (ret != 0)
return ret;
ret = int.Parse(ma[i].Groups[2].Value) - int.Parse(mb[i].Groups[2].Value);
if (ret != 0)
return ret;
}
return 0;
});
}
static void Main(string[] args)
{
List<string> l = new string[] { "1", "2a", "2b", "6", "8a", "10a" }.ToList();
NumericalSort(l);
foreach (var item in l)
Console.WriteLine(item);
}
答案 1 :(得分:0)
拆分数字和字符串,你可以实现你想要的目标
答案 2 :(得分:0)
CodeProject有一个偶尔使用的。