如果你有一个字符串列表什么,那么你可以使用自定义比较排序。下面是一些代码吧:
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);
}
6年后....我应该只是在这里做的是改变,而不是试图做到这一点的代码查询。可以很容易地将字符串(如下面的Ankit所示)拆分为数字和字母列,并且只是做了一个简单的ORDER BY数字,字母(当然,我并没有真正指定我使用SQL查询来拉取数据这个问题) – abney317