C# "First"类似语句,用于在调用数组时替换 foreach



我对C#很陌生,但我需要更改一个查看数组的小函数。在我正在处理的代码中,foreach 用于遍历项数组并将它们作为列表项在网页上呈现。现在,我必须找到这样的各种代码块,并将它们更改为不遍历整个数组,而是选择特定的项目并渲染它们。

如果我只想提取数组中绝对最新的项目,我将如何做?我需要更改的示例:#foreach($product in $Website.Products)需要更改为类似#firstitem($product in $Website.Products)

以下是上下文的整个块:

    <div class="slider-content">
        #if($Website.Products.Count != 0)
        <ul class="slider-list">
            #foreach($product in $Website.Products)
            <li class="slider-page">
                <div class="vdd-container">
                    <div class="vdd">
                        <blockquote>
                            <span class="quote-open"></span>
                            <q><span>${product.Message}</span></q>
                            <span class="quote-close"></span>
                        </blockquote>
                    </div>
                </div>
                <cite>
                    <strong class="pnx">${product.Name}</strong>
                </cite>
            </li>
            #end
        </ul>
        #else
        <div class="not-found">No products in store.</div>
        #end
    </div>

同样,只需要输出第一项,而不是循环遍历并执行每个项目。

谢谢。

查看 LINQ First()和/或FirstOrDefault()扩展方法。它们允许您在任何IEnumerable<T>中获得第一项。您还可以指定必须满足的条件

http://msdn.microsoft.com/en-us/library/system.linq.enumerable.first.aspx

//Gets the first product in the Products collection
var firstProduct = Website.Products.First();
//Gets the first product where a given condition is true
var firstExpensiveProduct = Website.Products.First(p => p.Cost > 100);

您应该能够通过多种方式执行此操作。

  1. 可以使用数组访问器:$Website.Products[0]
  2. 您可以使用 LINQ: $Website.Products.First()

使用简单数组时,第一个选项更有效。 后一个选项在某些情况下可能看起来更好,如果使用某些类型的集合(而不是简单的数组),则性能可能会更好。


您的模板语法意味着您正在使用 nVelocity 模板引擎。 如其他SO问题所述,nVelocity似乎无法处理扩展方法。 由于First()是一种扩展方法,这意味着您不能使用它。

数组访问器应该可以工作。

相关内容

  • 没有找到相关文章

最新更新