2016-12-12 3 views
0

値の辞書をループして「MTables 'QvxDataRow MakeEntry()'内の(テーブル名)フィールドは、辞書のキー値によって機能します。'System.Collections.Generic.KeyValuePair <int、dynamic>'を 'System.Collections.Generic.Dictionary <int、dynamic>に変換できません。

は、私はこの

SlNo StudentName StudentClass 
1  Daniel    4 
2   Maties    4 

のように含むように「MTables」を必要とするが、私のコードでは、私はエラーを取得

Cannot convert type 'System.Collections.Generic.KeyValuePair<int, dynamic>' to 'System.Collections.Generic.Dictionary<int, dynamic> 

以下のような各ループのために、私はハードコードされた値を追加し、中にそれを配置する必要があります行のMTables。私はこれを持っています

private IEnumerable<QvxDataRow> GetApplicationDB() 
     { 
      Dictionary<int, dynamic> map = new Dictionary<int, dynamic> 
    { 
     {1, new {SlNo="1", StudentName="Daniel",StudentClass="4"}}, 
     {2, new {SlNo="2", StudentName="Maties",StudentClass="4"}} 
    }; 

      foreach (Dictionary<int, string> evl in map) 
      { 
       yield return MakeEntry(evl, FindTable("ApplicationsStudentDB", MTables)); 
      } 
} 

     private QvxDataRow MakeEntry(evl, QvxTable table) 
     { 
      var row = new QvxDataRow(); 
      row[table.Fields[0]] = evl.SlNo; 
      row[table.Fields[1]] = evl.StudentName; 
      row[table.Fields[2]] = evl.StudentClass; 
      return row; 
     } 

どうすればいいですか、これを手伝ってください。

+1

何をすることができますか?あなたはこの質問の誤りを説明しません。あなたはコード内で何をしているのかを告げて、それを "どうやって"行うことができるかを尋ねます。実際の質問に答える必要があります。 –

+0

@ Alfie Goodacreは私のクエリを更新しました – daisy

+0

このコードはコンパイルされません。 'MakeEntry(dynamic evl、...)'は途中であなたを得るはずですが、あなたはStudentScoreなどがありません。 –

答えて

3

辞書内の項目をループすると、辞書内の項目は辞書ではなく、KeyValuePairです。あなたはループ内で間違ったタイプのevlと宣言しています。また、辞書にはintdynamicの型が含まれていますが、ループを文字列のペアとして宣言します。あなたはそのようなタイプを変えることはできません。それは次のようになります:

+2

または単に '(var evl in ...)' –

+0

@HenkHoltermanも同様に有効でしょう – ADyson

+0

@ADysonどのようにMTablesの行に入れるのですか?オブジェクトのインスタンスがオブジェクトエラーのインスタンスに設定されていません。 – daisy

関連する問題