我在排序List时遇到一些麻烦,我需要按FileInfo.Name attribut对其进行排序,在此名称中是一个在字符串的最开头具有未知长度的整数。我需要按这个数字对列表进行排序。
根据我的经验,很难用这个字符串中的数字比较两个字符串,所以我需要一些帮助。
这是我的清单:
我需要将列表从[1,13,2,3,4,5]分类到此[1,2,3,4,5,13]
这是我到目前为止所尝试的内容:
infos.Sort((a, b) => a.Split('-')[0].CompareTo(b.Split('-')[0]));
当然,当我尝试按数字比较字符串时,这不起作用....
修改 不幸的是,Mukund的解决方案无法正常工作,如图所示:
答案 0 :(得分:1)
你可以使用它。
infos.OrderBy(x => Convert.ToInt32(x.Split('-')[0]))
class Program11
{
static void Main(string [] args)
{
var infos = new List<string> { "1-100.jpg", "13-11.jpg", "2-145.jpg", "3-421.jpg", "4-842.jpg", "5-1000.jpg" };
var orderedList = infos.OrderBy(x => Convert.ToInt32(x.Split('-')[0]));
foreach (var lstItem in orderedList)
{
Console.WriteLine(lstItem);
}
Console.ReadKey();
}
}