2016-04-28 24 views
0

我对列表进行排序时遇到了一些麻烦,我需要通过FileInfo.Name attribut对它进行排序,在此名称中是在字符串的最开始处具有未知长度的整数。我需要按这个数字对列表进行排序。按文件信息名称中的int对文件信息列表进行排序

根据我的经验,很难在字符串中用数字比较两个字符串,所以我可能需要一些帮助。

这是我的名单:

enter image description here

我需要的列表,从这个[1,13,2,3,4,5]被分类到这个[1,2,3,4 ,5,13]

这里是我到目前为止已经试过:

infos.Sort((a, b) => a.Split('-')[0].CompareTo(b.Split('-')[0])); 

当然,我试图用数字来比较字符串这可不行....

编辑: Unfortunaely从木孔德解决方案不起作用如本图所示:

enter image description here

回答

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(); 
     } 
    } 

输出: enter image description here

+0

有在你的答案一点错误:infos.OrderBy(X => Convert.ToInt32(x.Name.Split( ' - ')[0]) );但它不管用; D – user3868224

+0

@ user3868224是什么? – Mukund

+0

“x.Name.Split”,正如我所说的,我已经尝试过了,不幸的是,您的解决方案不排序 – user3868224

相关问题