C# 如何循环浏览列表<;动态>;

C# 如何循环浏览列表<;动态>;,c#,list,dynamic,dictionary,C#,List,Dynamic,Dictionary,我有一个包含动态列表的类,我可以这样访问它 foreach (var c in objects) { foreach (dynamic i in c.data) { var ss = i; } } 班级 public class iUpdateGrid { public int type { get; set; } public string session { get; set; } public string latitude

我有一个包含动态列表的类,我可以这样访问它

foreach (var c in objects)
{
    foreach (dynamic i in c.data)
    {
        var ss = i;
    }
}
班级

public class iUpdateGrid
{
    public int type { get; set; }
    public string session { get; set; }
    public string latitude { get; set; }
    public string longitude { get; set; }
    public string ip { get; set; }
    public int id { get; set; }
    public string station { get; set; }
    public List<iGridData> h_33 { get; set; }
}
public class iGridData
{
    public string table { get; set; }
    public List<dynamic> data { get; set; }
}
公共类iUpdateGrid
{
公共int类型{get;set;}
公共字符串会话{get;set;}
公共字符串纬度{get;set;}
公共字符串经度{get;set;}
公共字符串ip{get;set;}
公共int id{get;set;}
公共字符串站{get;set;}
公共列表h_33{get;set;}
}
公共类伊格里达
{
公共字符串表{get;set;}
公共列表数据{get;set;}
}
“ss”现在包含一个对象列表,但是不知道如何将这些值放到字典或列表中。 注意,我还需要调整键名

我试图做的事情:

foreach (KeyValuePair<string, string> kv in i)
{
    string key = kv.Key;
    string value = kv.Value;
}
foreach(i中的键值对kv)
{
串键=千伏键;
串值=千伏值;
}
foreach语句无法对“System.Collections.IEnumerable”类型的变量进行操作,因为“System.Collections.IEnumerable”不包含“GetEnumerator”的公共定义

此外,动态对象不提供访问键和/或值的选项

我将非常欢迎任何关于如何循环完成此任务的帮助

另外,当我把它放在运行时,“I”表示它是一个System.Collections.Generic.Dictionary,但也可以访问它

解决方案:

几乎没有机会按规定解决问题,但这对我很有效:

        foreach (var c in objects)
        {
            foreach (dynamic i in c.data)
            {
                foreach (var v in (i as IDictionary<string, object>))
                {
                    string key = v.Key;
                    object value = v.Value;
                }
            }
        }
foreach(对象中的变量c)
{
foreach(c.data中的动态i)
{
foreach(var v in(i作为索引))
{
字符串键=v.键;
对象值=v.值;
}
}
}
foreach(变量v in(i作为IEnumerable))
{
if(v是KeyValuePair)
{
//做事
}
else if(v是列表)
{
//做事
}
否则抛出新的InvalidOperationException();
}

问题是“如何将c.data转换为字典”,对吗?如果是,那么c.data的类型是什么?此外,错误“'System.Collections.IEnumerable'不包含'GetEnumerator'的公共定义”也没有意义。它确实包含一个
GetEnumerator
.c.data是一个动态列表DictionaryNo不起作用,已经triedI get error“Object reference not set to a instance of a Object.”on(i as IEnumerable),而这段代码可能会回答这个问题,提供关于解决问题的方式和/或原因的附加上下文将提高答案的长期价值。请描述您的答案,而不仅仅是使用代码。否则您的答案将被删除!
    foreach (var v in (i as IEnumerable<object>))
    {
        if (v is KeyValuePair<string, string>)
        {
            // Do stuff
        }
        else if (v is List<string>)
        {
            //Do stuff
        }

        else throw new InvalidOperationException();
    }
foreach (var c in objects)
{
    foreach (dynamic i in c.data)
    {
        var property_value = i.GetType().GetProperty("PROPERTY_NAME").GetValue(i);
    }
}