日期:2014-05-17  浏览次数:20788 次

呼叫q107770540,请教一个排序的问题
看到你之前回复的一个帖子
http://bbs.csdn.net/topics/350096947


我目前也遇到了类似的问题,有如下数组

string[] fileList = new string[] { "123456-asd45sdf-2", "6666-a234sdsdf-5", "7849561-asdsdf-1" };

想让数组中每个元素按第三个“-”后面的数字降序排序

输出效果:
6666-a234sdsdf-5
123456-asd45sdf-2
7849561-asdsdf-1

之前看到你写的代码

fileList.OrderBy(s => int.Parse(Regex.Match(s, @"\d+").Value)).ToArray();

本想将代码套用到我遇到的问题上,不过run了一下发现不可行,因为我的元素中包含多个数字,但我遇到的需求是将元素按第二个“-”后面数字降序排序,麻烦帮下忙。多谢了~

------解决方案--------------------
fileList.OrderBy(s => int.Parse(Regex.Match(s, @"\d+$").Value)).ToArray();

------解决方案--------------------
		string[] fileList = new string[] { "123456-asd45sdf-2", "6666-a234sdsdf-5", "7849561-asdsdf-1" };
string[] results = fileList.OrderByDescending(x => int.Parse(Regex.Match(s, @"\d+$").Value)).ToArray();
foreach (string result in results)
Response.Write(result + "<br/>");

------解决方案--------------------
 string[] fileList = new string[] { "123456-asd45sdf-2", "6666-a234sdsdf-5", "7849561-asdsdf-1" };
            fileList = fileList.OrderByDescending(t => Convert.ToInt32(Regex.Match(t, @"(?<=^(\w+\-){2})\d+").Value)).ToArray();