2

最後に作成または変更された日時に基づいてファイルを並べ替え、最後に追加されたファイルを最初に表示する必要があります。基本的に、asp.netフォームはWebサーバーにファイルをアップロードするためのもので、アップロード後、デフォルトではファイルはその名前に基づいて整理されます。つまり、アルファベット順に言う必要があります。それで、アップロードされた時間に基づいて並べ替えて整理するのを手伝ってくれる人はいますか。

protected void getFiles()
{
    System.Text.StringBuilder sbld = new System.Text.StringBuilder();
    if (Directory.Exists(Server.MapPath("~/Package_Image/")))
    {
        DirectoryInfo dirMail = new DirectoryInfo(Server.MapPath("~/Package_Image/"));
        FileInfo[] DefaultFiles = dirMail.GetFiles();
        foreach (FileInfo fileDir in DefaultFiles)
        {
            if (fileDir.Extension.ToLower() == ".jpg" || fileDir.Extension.ToLower() == ".gif" || fileDir.Extension.ToLower() == ".png" || fileDir.Extension.ToLower() == ".jpeg" || fileDir.Extension.ToLower() == ".bmp")
            {
                // need sorting on the basis of date-time, it was created or uploaded.
                sbld.Append("<div class='itemBox'><table width='100%'><tr><td height='160'><img width='200' src='../Package_Image/" + fileDir.Name + "'></img></td></tr></table></div>");
            }
        }
        Literal1.Text = (sbld.ToString());
    }
}

並べ替えは、サーバー自体によって行われる C# を使用している可能性があります。可能であれば、クライアント自体で処理できるように、javascript または jquery を使用して行うこともできます。

4

2 に答える 2

3

とてもシンプルです。他の using ステートメントの横に System.Linq への参照が追加されていることを確認してください。

//using System.Linq
protected void getFiles()
{
    System.Text.StringBuilder sbld = new System.Text.StringBuilder();
    if (Directory.Exists(Server.MapPath("~/Package_Image/")))
    {
        DirectoryInfo dirMail = new DirectoryInfo(Server.MapPath("~/Package_Image/"));
        FileInfo[] orig = dirMail.GetFiles();        
        // Sort on server
        FileInfo[] DefaultFiles = (from file in orig orderby file.CreationTime select file).ToArray();
        foreach (FileInfo fileDir in DefaultFiles)
        {
            if (fileDir.Extension.ToLower() == ".jpg" || fileDir.Extension.ToLower() == ".gif" || fileDir.Extension.ToLower() == ".png" || fileDir.Extension.ToLower() == ".jpeg" || fileDir.Extension.ToLower() == ".bmp")
            {
                // need sorting on the basis of date-time, it was created or uploaded.
                sbld.Append("<div class='itemBox'><table width='100%'><tr><td height='160'><img width='200' src='../Package_Image/" + fileDir.Name + "'></img></td></tr></table></div>");
            }
        }
        Literal1.Text = (sbld.ToString());
    }
}
于 2013-04-05T04:08:19.573 に答える
0

「System.Linq」が役立ちます。そのための using ステートメントを含めます。

そして、このようなラムダ式またはlinqクエリを書くことができます

ラムダ式:

FileInfo[] SortedFiles = dirMail.GetFiles().OrderBy(file => file.CreationTime).ToArray();

Linq クエリ:

FileInfo[] SortedFiles = (from file in dirMail.GetFiles() order by file.CreationTime select file).ToArray();

最初に日時の降順で並べ替え、次に名前の昇順で並べ替える必要がある場合は、

ラムダ式:

FileInfo[] SortedFiles = dirMail.GetFiles().OrderByDescending(file => file.CreationTime).ThenBy(file => file.Name).ToArray();

Linq クエリ:

FileInfo[] SortedFiles = (from file in dirMail.GetFiles() orderby file.CreationTime descending, file.Name ascending select file).ToArray();
于 2013-04-05T04:29:26.483 に答える