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;
}

效率不是很高,但它确实有效。

您也可以考虑使用 System.IO.Path。

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

除了附加到字符串之外,您还可以预先添加:

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

请注意,在目前提供的所有解决方案中,生成的字符串都有一个尾随“/”。

于 2012-08-17T12:01:29.950 回答