在ASP.NET MVC-3中显示没有foreach循环的数组列表

时间:2011-10-18 14:43:31

标签: arrays asp.net-mvc-3 listview

我想从XML文件中检索数组列表。我使用集成工具进行查询。但是如果我想创建一个没有任何foreach循环的数组列表,我该怎么办呢。 (原因是,在这种情况下,foreach无法应用。

XML文件格式:

<arr name="ArrayinXML"><str>dsfadasfsdasda</str><str>gdhsdhshhfb</str>

在Index.cshtml中:

@p.ArrayinXML.FirstOrDefault()

在上面的例子中,它只返回第一个字符串值,而不是第二个字符串值。

1 个答案:

答案 0 :(得分:0)

你能为你做一个为foreach做的扩展方法吗?

这样的事情:

public static class IEnumerableExtensions
{
    public static string ToString<T>(this IEnumerable<T> collection, string separater)
    {
        if (collection == null)
            return String.Empty;

        return String.Join(separater, collection);
    }
}

当然,您可以在代码中调用@String.Join(p.ArrayinXML, ", "),但我认为扩展方法使其更加优雅。

然后将扩展名称空间添加到web.config中,您可以在视图中执行此操作:

@p.ArrayinXML.ToString(", ")

编辑:

这是带有transform参数的扩展,因此您可以进一步自定义:

public static string ToString<T>(this IEnumerable<T> collection, string separater, Func<T, object> transform) where T : class
{
    if (collection == null)
        return String.Empty;

    return String.Join(separater, collection.Select(s => transform(s).ToString()));
}