0

C# Dictionary<string, Dictionary<string, object>> があり、nVelocity テンプレートを使用してデータを表示しようとしています。また、インデックスを使用して辞書のキーを取得しようとしています。私は初心者です。

インデックスを使用してキーにアクセスする方法を教えてください。たとえば、インデックス 0 のキーにアクセスしたいのですが、反復を使用してデータを表示するにはどうすればよいですか?

    <table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr class="HeaderOne">
            <td align="left">Class</td>

            #foreach($services in $VolumeSummary)
                #foreach($item in $VolumeSummary[$services])
                    <td class="numeric-th">$item.AverageUnitPriceF</td>
                #end
                #break
            #end
            <td class="numeric-th">Average Price</td>
            <td class="numeric-th">Total</td>
        </tr>

        #foreach ($item in $TotalsByServiceAndTermYear)
        <tr style="color:#333;font-weight:normal;">
            <td>$item.Service</td>
            <td class="numeric-td">
                $!item.Year
            </td>
            <td class="numeric-td">
                $!item.AverageUnitPriceF
            </td>
            <td class="numeric-td">
                $!item.TotalPriceF
            </td>
        </tr>
        #end
    </tbody>
</table>
4

1 に答える 1

1

NVelocity は .NET オブジェクトの上にあるだけなので、ディクショナリからインデックスで項目を取得することはできませんが、$dict.get_Item("key")キーで項目を取得するために使用できます。これは、項目インデクサーの基になる CLR メソッドであるため、インデクサーの構文です。 .

他の人が言及しDictionaryているように、 a には非決定論的なソート順があるため、 a の使用を検討してSortedDictionaryください。

あなたの例のように、ディレクティブ#foreachを使用してから中断することができます。#breakv1.1.1 をリリースした後の 2011 年に実装されたため、マスターからビルドするか、ビルド サーバーからマスター ビルドを取得する必要があります。それ以外の場合は、条件を使用して内容を非表示にすることで回避できます。

#foreach($item in $dict)
  $item.Key
  #break
#end

#foreach($item in $dict)
  #if($velocityCount == 1)
    $item.Key
  #end
#end
于 2016-11-30T15:58:43.790 に答える