2016-12-12 215 views
0

我試圖循環訪問值的字典,然後更新「MTables 「(表名)字段中的'QvxDataRow MakeEntry()'功能。無法將類型'System.Collections.Generic.KeyValuePair <int,dynamic>'轉換爲'System.Collections.Generic.Dictionary <int,動態>

我需要「MTables」包含這樣

SlNo StudentName StudentClass 
1  Daniel    4 
2   Maties    4 

,但在我的代碼我得到錯誤的每個循環像下面

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

我需要添加硬編碼值,並把它變成一排表盤。我有這個

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(動態evl,...)'應該讓你在路上,但你會失去StudentScore等。仍然不是很清楚。 –

回答

3

這是因爲當您循環訪問Dictionary中的項目時,Dictionary內的項目不是Dictionary,而是KeyValuePair。您在循環中聲明瞭evl錯誤的類型。此外,您的字典包含intdynamic類型,但是您將該循環聲明爲一對字符串。你不能只改變那種類型。它應該是:

foreach (KeyValuePair<int, dynamic> evl in map) 
+2

或者只是'(var evl in ...)' –

+0

@HenkHolterman是的,這將是同樣有效的 – ADyson

+0

@ADyson如何把它放入行的MTables?我得到的對象實例未設置爲對象錯誤的實例 – daisy

相關問題