2017-01-30 44 views
0

我創建了從XLS表表示單元格值的列表,它看起來是這樣的,其次是一個INSERT語句,我將用它來使這些值按一定的數據庫:如何從下面的語法訪問c#字典元素?

List<FieldValues> fieldValues = new List<FieldValues>() 
{ 
    new FieldValues(tableFields[0]) { 
     dictionary = new Dictionary<int, string>() 
     { 
      {0, "" }, 
      {1, "" } 
     } 

    }, 
    new FieldValues(tableFields[1]) { 
     dictionary = new Dictionary<int, string>() 
     { 
      {0, "x" }, 
      {1, "x" } 
     } 

    }, 
    new FieldValues(tableFields[2]) { 
     dictionary = new Dictionary<int, string>() 
     { 
      {0, "x" }, 
      {1, "x" } 
     } 

    }, 
    new FieldValues(tableFields[3]) { 
     dictionary = new Dictionary<int, string>() 
     { 
      {0, "Car" }, 
      {1, "Travel" } 
     } 

    }, 
}; 


string createQuery2 = createQuery + "\n INSERT INTO `poi_specs_mgu_ece_1.6` ("; 

for (var i = 0; i < tableFields.Count; i++) 
{ 
    createQuery2 += "\n\t" + tableFields[i].GetFieldDeclaration() + (i == tableFields.Count - 1 ? string.Empty : ","); 
} 
createQuery2 += ")\n VALUES ("; 


for (var i = 0; i < fieldValues.Count; i++) 
{ 

    createQuery2 += "\n\t" + fieldValues[i].dictionary; //+ (i == fieldValues.Count - 1 ? string.Empty : ","); 
} 
createQuery2 += " \n);"; 

當我創建createQuery2它返回(內側VALUES)執行以下操作:

System.Collections.Generic.Dictionary 2[System.Int32,System.String] System.Collections.Generic.Dictionary 2 [System.Int32,System.String] System.Collections.Generic.Dictionary 2[System.Int32,System.String] System.Collections.Generic.Dictionary 2 [系統。 INT32,System.Strin g]

而不是字典中的值。 有人可以幫助我更好地觀察問題嗎?爲什麼我不能閱讀字典元素?

+0

fieldValues [I] .dictionary是一本字典,你成爲它只是的ToString,如果你想使用fieldValues [I] .dictionary [0]你會得到vaue。但:你的代碼是打開的SQL注入,使用參數,而不是隻是連接值! –

+1

你能解釋什麼代表字典的兩個鍵?他們是一個領域的名字和價值嗎? – Steve

回答

1

在這部分代碼:

createQuery2 += "\n\t" + fieldValues[i].dictionary; 

要添加的字典的字符串時,它是一個對象,所以它會試圖讓你的對象轉換成字符串,它只是返回類型。

您需要直接訪問字典值。

像這樣:

createQuery2 += "\n\t" + fieldValues[i].dictionary[0] + fieldValues[i].dictionary[1]; 
+0

它的工作原理!非常感謝! –

+0

但是,可以說我想創建一個方法來檢查字典是否有特定的行?像這樣的新FieldValues(tableFields [3]){ 詞典=新詞典() { {0, 「汽車」}, {1, 「旅行」} }我怎樣才能存取權限字典行 –

+0

對不起,你可以忽略我的最後一條評論:這是要成爲 但是,讓我們說我想創建一個方法來檢查字典是否有特定的行?像這樣的 公共字符串GetRowValue(int行) { return string.Empty; } 我如何訪問以驗證我的字典是否有特定的行? –