我使用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);
答案 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();