0

私は C# を初めて使用しますが、配列を参照する小さな関数を変更する必要があります。私が取り組んでいるコードでは、 foreach を使用してアイテムの配列を調べ、リスト アイテムとして Web ページにレンダリングします。今のところ、このようなコードのさまざまなブロックを見つけて、配列全体をループするのではなく、特定のアイテムを選択してレンダリングするように変更する必要があります。

配列内の最新のアイテムを取り出したいだけの場合、どうすればよいでしょうか? 変更が必要なものの例:次の#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>

繰り返しますが、ループしてそれぞれを実行するのではなく、最初の項目を出力する必要があります。

ありがとう。

4

2 に答える 2

2

LINQFirst()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);
于 2012-12-13T02:25:32.203 に答える
1

これは、さまざまな方法で実行できるはずです。

  1. 配列アクセサーを使用できます。$Website.Products[0]
  2. LINQ を使用できます。$Website.Products.First()

最初のオプションは、単純な配列を操作する場合により効率的です。後者のオプションは、状況によっては見栄えが良く、(単純な配列ではなく) 特定のタイプのコレクションを使用している場合にパフォーマンスが向上する場合があります。


テンプレート構文は、nVelocity テンプレート エンジンを使用していることを意味します。他の SO の質問で述べたように、nVelocity は拡張メソッドを処理できないようです。は拡張メソッドであるためFirst()、使用できません。

ただし、配列アクセサーは機能するはずです。

于 2012-12-13T02:23:41.563 に答える