如何从List <dynamic>()获取数据?

Ath*_*hul 0 c# dynamic

我的代码是这样的

var eventDocs = new List<dynamic>();     
foreach (var node in eventtypeNode.GetDescendantNodes())
{
    string files = node.GetProperty("document").Value;
    eventDocs.Add(new { Id = node.Id, Name = node.Name, CreatedOn = node.CreateDate, Path = files });
}
Run Code Online (Sandbox Code Playgroud)

这很好用.现在我试图从这个动态列表中获取数据

foreach (var eventDoc in eventDocs)
{
     eventDoc.----  //nothing comes on intellisence
}
Run Code Online (Sandbox Code Playgroud)

IntelliSense上没有任何东西?我做错了吗?

Jon*_*eet 5

你不会从Intellisense得到任何东西,因为你有一个List<dynamic>.你说,"我在编译时不知道这个列表将包含什么.当我访问元素的成员时,只需在执行时动态绑定它."

鉴于你将延迟绑定到执行时间,为什么你会惊讶于Intellisense无法分辨列表中的内容?

在我看来,您应该更改代码以使用LINQ查询开始 - 然后您可以拥有一个已知元素类型的列表,这将是一个匿名类型.

var eventDocs = eventtypeNode.GetDescendantsNodes()
      .Select(node => new { Id = node.Id, 
                            Name = node.Name, 
                            CreatedOn = node.CreateDate,
                            Path = node.GetProperty("document").Value })
      .ToList();
Run Code Online (Sandbox Code Playgroud)