1

C#の最後の位置のオブジェクトから始まるオブジェクトのリストをループするにはどうすればよいですか?ここでは、asp.net mvc 3アプリケーションがあり、ディレクトリが利用できない場合に利用可能なカテゴリに従ってパスをアップロードするためのディレクトリを作成する必要があります。ただし、カテゴリオブジェクトのリストは、子カテゴリが最初の位置にある場合とは逆の順序になっています。親カテゴリ内に子カテゴリのフォルダを作成したい。ループを逆の順序で開始したいのですが、カテゴリオブジェクトのリストを逆にする関数はありますか。次のforeachループがあります。

    foreach (var item in parentcategory)
    {   
        categorypath += item.CategoryName + "/" ;
    }

どんな助けでも大歓迎です

4

3 に答える 3

6

最も単純な解決策ですが、最も効率的ではありません。

parentcategory.Reverse();
foreach (var item in parentcategory)
{   
    categorypath += item.CategoryName + "/" ;
}

また:

for (int i=parentcategory.Count-1; i>=0; i--)
{   
    var item = parentcategory[i];
    categorypath += item.CategoryName + "/" ;
}
于 2012-08-17T11:49:29.820 に答える
1

文字列に追加する代わりに、次のように追加することもできます。

foreach (var item in parentcategory)
    {   
        categorypath = item.CategoryName + "/" + categorypath;
    }

これまでに提示されたすべてのソリューションで、結果の文字列の末尾に「/」が付いていることに注意してください。

于 2012-08-17T12:01:29.950 に答える
1

実際には、逆にループする必要はありません。

foreach (var item in parentcategory)
{   
    categorypath = item.CategoryName + "/" + categorypath;
}

それほど効率的ではありませんが、機能します。

System.IO.Pathの使用を検討することもできます。

var categorypath = Path.Combine(categories.Reverse().ToArray());
于 2012-08-17T12:01:09.067 に答える