1

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

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

我的 Image 文件夹中包含 Image1.jpg、Image2.jpg、Image3.jpg........Image100.jpg 等图像。

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

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

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

4 回答 4

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将在 before 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();
于 2013-09-13T06:29:15.867 回答
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);
于 2013-09-13T06:29:43.187 回答
1

你可以像这样使用 linq:

Directory.GetFiles(Server.MapPath("Image")).OrderBy(c => c.Name).ToList();   
于 2013-09-13T06:30:14.690 回答
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();
于 2013-09-13T07:11:56.403 回答