如何在asp.net中按顺序从Directory获取文件?

时间:2013-09-13 06:26:08

标签: c# asp.net linq io directory

我使用c#语言从asp.net中的目录中获取文件:

string[] array=Directory.GetFiles(Server.MapPath("Image"));

我的图片文件夹包含Image1.jpg,Image2.jpg,Image3.jpg ........ Image100.jpg等图片。

我的问题是,我没有按顺序获取图像文件。如何按顺序获取Image文件Image1 to Image100 ....

是的......我自己解决了......这就是解决方案:

var arr = (from u in Directory.GetFiles(Server.MapPath("Images")) let fi = new FileInfo(u) orderby fi.CreationTime select u);

4 个答案:

答案 0 :(得分:2)

使用LINQ OrderBy

string[] array = Directory.GetFiles(Server.MapPath("Image"))
                          .OrderBy(x => x)
                          .ToArray();

或没有LINQ,使用Array.Sort方法:

string[] array = Directory.GetFiles(Server.MapPath("Image"));
Array.Sort(array);

但它会使用默认字符串比较进行排序,因此Image100将在Image2之前。

使用数字对它进行排序会有点棘手,但你可以用linq来做:

string[] array = (from f in Directory.GetFiles(Server.MapPath("Image"))
                  let n = int.Parse(f.Replace("Image", string.Empty).Replace(".jpg", string.Empty))
                  order by n
                  select f).ToArray();

答案 1 :(得分:2)

试试这个;

var images = from img in Directory.GetFiles(Server.MapPath("Image"))    
             orderby img descending 
             select img;

或者作为替代方案,您可以使用OrderByDescending;

var images = Directory.EnumerateFiles(Server.MapPath("Image"))
                      .OrderByDescending(img => img);

答案 2 :(得分:1)

你可以像这样使用linq:

Directory.GetFiles(Server.MapPath("Image")).OrderBy(c => c.Name).ToList();   

答案 3 :(得分:0)

这将有效

 List<string> s = new List<string>();
 s.Add("image1.jpg");
 s.Add("image10.jpg");
 s.Add("image3.jpg");
 s.Add("image45.jpg");
 List<string> lst = s.OrderBy(x => int.Parse(x.Split('.')[0].Split(new string[] { "image" }, StringSplitOptions.None)[1])).ToList();