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 结构中的所有字符串 - 这怎么能实现?

4

4 回答 4

2

根据我的评论:使用 aList<String>而不是那些字符串变量。

@Tim Schmelter我做不到,因为我需要按特定顺序分配/调用特定值,而我不能用列表来做到这一点

使用集合的索引器。

Dictionary<string, List<string>> dataDict = new Dictionary<string, List<string>>();
// initialization ...
String val20OfData1 = dataDict["Data1"][19];
于 2012-08-26T22:04:39.493 回答
0

好吧,您可以为 dataValues 编写一个客户枚举器,它按术语返回每个成员变量,或者甚至使用反射来检索所有字段……但为什么不简单地使用Dictionary<string, List<string>>

于 2012-08-26T21:58:08.210 回答
0

为什么在 struct 中使用 20 个属性?最好将它们存储在List

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

您可以执行以下操作:

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

另外,如果你的 struct 只是 a List,直接使用它,不需要创建一个 struct

所以,这将是 Dictionary<string, List<string>>

接着

foreach(string value in dataDict["yourKey"])
    {
    //do what ever you want with value here
    }
于 2012-08-26T21:59:14.483 回答
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);
        }
于 2012-08-27T05:44:37.737 回答