如何实现我自己的集合,可以像字典一样使用

时间:2013-09-21 14:02:45

标签: .net vb.net

所以我有一个对象是Web请求的回复的一部分,该请求有两个属性。两者都是字符串数组。第一个称为COLUMNNAMES,第二个称为VALUES。例如,COLUMNNAMES将包含以下内容:

“ID”,“NAME”,“DATEADDED”,“DATECHANGED”

和VALUES将包含以下内容:

“1”,“APPLES”,“09/21/2013”​​,“09/21/2013”​​

“2”,“ORANGES”,“09/21/2013”​​,“09/21/2013”​​

“3”,“STRAWBERRIES”,“2013年9月21日”,“2013年9月21日”

我希望能够以某种方式将这些处理成一种我可以这样调用的数据结构:

Dim rows = GetReply()

For Each r in rows
    Dim value = r("ID") 'ID is a column name
Next 

我可以实现一种类型来创建它还是已经存在?谢谢!

2 个答案:

答案 0 :(得分:1)

这里最好的答案是数据表。

答案 1 :(得分:0)

您可以使用LINQ将其转换为Dictionary s:

的序列
class Reply {
    string[] _columnNames = {"ID", "NAME"}; // the list of columns you received

    string[][] _rowValues = { // the lists of values you received
        new[]{"1", "APPLES"},
        new[]{"2", "ORANGE"}
    };

    public IEnumerable<Dictionary<string, string>> Rows {
        get {
            foreach (var row in _rowValues) {
                yield return _columnNames
                                .Zip(row, (key, value) => new {key, value})
                                .ToDictionary(kv=>kv.key, kv=>kv.value);
            }
        }
    }
}

// ...

foreach (row in new Reply().Rows) {
    var id = row["ID"];
    var name = row["NAME"];
}