2016-07-14 8 views
0

私はかみそりのビュー内からこのforeachを使わずにCの辞書リストの各項目にアクセスする方法は?

public List<Dictionary<string, object>> Data { get; set; } 

のような辞書のリストを持って、私は、リストの上に、私はそれがディレクトリの内容です表示するリストの各項目のためにループにしたいです。ここで

は私のオブジェクトここ enter image description here

enter image description here

のスクリーンショットである私は私のビュー内

@for (int y = 0; y < Model.Data.Count; y++) 
{ 
<tr> 

    @for (int x = 0; x < Model.Data[y].Count; x++) 
    { 
     <td>@Model.Data[y][x].Value</td> 
    } 

</tr> 
} 

を行っている。しかし、これは私にエラー

を与えているものです

コンパイラエラーメッセージ:CS1502:ベストオブ 「System.Collections.Generic.Dictionary.this [文字列]」 ためrloaded方法の試合は、私がここで間違ってやっている何を、いくつかの無効な引数

を持っていますか?どのようにしてデータを正しくループすることができますか?

注:私は前の行/次の行を知ることができるようにする必要があるので、私はここにforeachループを使用したくないと私はまた、ビューで一部のレコードを合計する

答えて

3

あなたの辞書のキーはstringタイプですが、あなたのコードでは、キーの値にアクセスしようとしている(変数xの値)として整数値を渡しています。

辞書キーを繰り返して、それを使って各項目値を取得することができます。

これはそれを行う必要があります。

@foreach(var key in Model.Data[y].Keys) 
{ 
    <td>@Model.Data[y][key].Value</td> 
} 

あるいはfullblown foreachソリューション

@model SomeClassWhichHasTheDataPropertyWhichIsTheDictionary 
@foreach(var dict in Model.Data) 
{ 
    <tr> 
    @foreach(var key in dict.Keys) 
    { 
     <td>@dict[key]</td> 
    } 
    </tr> 
} 
0

あなたのような何かを試みることができます次

@foreach(var item in Model.Data) 
{ 
    <tr> 
    foreach(var key in item.Keys) 
    { 
     <td>item[key]</td> 
    } 
    </tr> 
} 

は、なぜあなたは、このエラーメッセージが表示されますか?

あなたの辞書のキーは整数ではなく文字列です。

Dictionary<string, object> 
+0

私が使用したくありませんforeachループ – Jaylen

0

辞書のキーは文字列ではなく整数です。しかし、あなたが辞書にforeachを使用しない場合、あなたはリストにキーと値のペアをコピーして、従来のforループ内でその中を歩くことができます。

@for (int y = 0; y < Model.Data.Count; y++) 
{ 
<tr> 
    var kvpairs = Model.Data[y].ToList(); 

    @for (int x = 0; x < kvpairs.Count; x++) 
    { 
     var o = kvpairs[x].Value; 
     <td>@o</td> 
    } 
</tr> 
} 
関連する問題