1

c# 言語を使用して、asp.net のディレクトリからファイルを取得しています。

string[] array=Directory.GetFiles(Server.MapPath("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);

ただし、デフォルトの文字列比較を使用してソートするため、Image100before になります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 に答える
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 に答える