2012-08-26 30 views
0

我有一本字典如下:遍歷字典的結構中的字符串

Dictionary<string, dataValues> dataDict = new Dictionary<string, dataValues>(); 

public struct dataValues 
    { 
     public string Value1; 
     public string Value2; 
     public string Value3; 
     public string Value4; 
     public string Value5; 
     public string Value6; 
     public string Value7; 
     public string Value8; 
     public string Value9; 
     public string Value10; 
     public string Value11; 
     public string Value12; 
     public string Value13; 
     public string Value14; 
     public string Value15; 
     public string Value16; 
     public string Value17; 
     public string Value18; 
     public string Value19; 
     public string Value20; 
    } 

我想通過指定字典鍵就可以通過所有的dataValues結構內的字符串進行迭代 - 如何這可以完成嗎?

+6

使用'名單',而不是那些字符串變量。 –

+0

@Tim Schmelter我不能這樣做,因爲我需要按特定順序分配/調用特定值,並且我無法通過列表來執行此操作 – user1559618

+3

使用數組然後使用 –

回答

2

從我的評論:使用List<String>而不是那些字符串變量。

@Tim Schmelter我不能這樣做,因爲我需要分配/調用特定 值按照一定的順序,我不能做一個列表

使用的索引採集。

Dictionary<string, List<string>> dataDict = new Dictionary<string, List<string>>(); 
// initialization ... 
String val20OfData1 = dataDict["Data1"][19]; 
0

好了,你可以寫一個客戶枚舉數,在長期回報每一個成員變量dataValues,甚至使用反射來獲取所有領域..​​....但爲什麼不乾脆用一個Dictionary<string, List<string>>

0

你爲什麼要使用20你的結構中的屬性?這將是最好的,如果你的存儲他們的List

public struct dataValues 
    { 
     public List<string> Values; 
    } 

,你可以這樣做:

foreach(string value in dataDict["yourKey"].Values) 
{ 
//do what ever you want with value here 
} 

另外,如果你的結構是唯一的一個List,直接使用,無需創建一個結構

所以,這將是Dictionary<string, List<string>>

然後

foreach(string value in dataDict["yourKey"]) 
    { 
    //do what ever you want with value here 
    } 
0

我不確定你要做什麼。無論如何,如果你必須使用你的結構中獨立字符串變量,你可以以這種方式使用反射:

 dataValues dv = dataDict["yourKey"]; 
     Type dvT = dv.GetType(); 
     FieldInfo[] fis = dvT.GetFields(); 
     foreach (FieldInfo fi in fis) 
     { 
      MessageBox.Show(fi.GetValue(dv) as string); 
     }