C# ExpandoObject中的列表 动态模型=新的ExpandooObject(); model.Data=“asdf”; List listOfx=新列表(); 对于(int i=0;i
当我运行这个程序时,我可以看到模型内部的数据,但不能看到listOfx 问题:如何在ExpandooObject中获取列表(或IEnumerable) 解决方案更新:C# ExpandoObject中的列表 动态模型=新的ExpandooObject(); model.Data=“asdf”; List listOfx=新列表(); 对于(int i=0;i,c#,expandoobject,C#,Expandoobject,当我运行这个程序时,我可以看到模型内部的数据,但不能看到listOfx 问题:如何在ExpandooObject中获取列表(或IEnumerable) 解决方案更新: 因为我在本地窗口看不到lifOfx,我认为它不起作用。在这里(通过y)可以看到它是::-) ExpandoObject支持IDictionary。你可以这样投 dynamic model = new ExpandoObject(); model.Data = "asdf"; List<dynamic&
因为我在本地窗口看不到lifOfx,我认为它不起作用。在这里(通过y)可以看到它是::-) ExpandoObject支持IDictionary。你可以这样投
dynamic model = new ExpandoObject();
model.Data = "asdf";
List<dynamic> listOfx = new List<dynamic>();
for (int i = 0; i < 3; i++) {
dynamic x = new ExpandoObject();
x.ID = i;
x.Name = "test" + i.ToString();
listOfx.Add(x);
}
model.listOfx = listOfx;
因此,您可以对其进行迭代。我无法在Mono 2.10上重现类似的问题:
IDictionary myModel =(IDictionary)Model;
我很快会在windows上重新测试
更新已测试以下各项:
- linux编译(dmcs)二进制文件在装有Mono 2.10的Windows上运行:OK
- linux编译(dmcs)二进制文件运行在MS.NET 4.0的Windows上:OK
- windows编译(dmcs)二进制文件在装有Mono 2.10的windows上运行:OK
- windows已编译(dmcs)二进制文件在带有MS.NET 4.0的windows上运行:确定
- windows编译(csc.exe)二进制文件在使用Mono 2.10的windows上运行:OK
- windows编译(csc.exe)二进制文件在MS.NET 4.0的windows上运行:确定
在linux上,我只测试了mono本身编译的二进制文件,但我预计不会有任何问题。也许在列表中存储动态有一些微妙的不同,现在我将测试一下,上面的代码对于设置列表非常有效。例如,在代码之后添加此选项将很好:
/tmp @ dmcs test.cs && mono test.exe
test1, test2
aap, noot, mies
例如,请尝试以下(全功能示例):
使用系统;
使用System.Collections.Generic;
运用系统动力学;
使用System.Linq;
公共静态类测试
{
公共静态void Main()
{
动态模型=新的ExpandooObject();
model.Data=“asdf”;
List listOfx=新列表();
对于(int i=0;i<3;i++)
{
动态x=新的ExpandooObject();
x、 ID=i;
x、 Name=“test”+i.ToString();
添加(x);
}
model.listOfx=listOfx;
//列表中的访问值
Console.WriteLine(model.listOfx[1].Name);
//遍历列表
foreach(model.listOfx中的var o)
{
控制台写入线(o.ID);
}
Console.ReadKey();
}
}
这使用了您的精确示例代码。我想您的意思是
foreach(model.listOfx中的var o)
(两次)?非常感谢@sehe-事实上这是我自己的错。。。因为无法在窗口中看到,所以认为它不起作用。但事实的确如此!
/tmp @ dmcs test.cs && mono test.exe
test1, test2
aap, noot, mies
// Access value inside list
Console.WriteLine(model.listOfx[1].Name);
// Iterate through list
foreach (var o in model.listOfx)
{
Console.WriteLine(o.ID);
}
using System;
using System.Collections.Generic;
using System.Dynamic;
using System.Linq;
public static class Test
{
public static void Main()
{
dynamic model = new ExpandoObject();
model.Data = "asdf";
List<dynamic> listOfx = new List<dynamic>();
for (int i = 0; i < 3; i++)
{
dynamic x = new ExpandoObject();
x.ID = i;
x.Name = "test" + i.ToString();
listOfx.Add(x);
}
model.listOfx = listOfx;
// Access value inside list
Console.WriteLine(model.listOfx[1].Name);
// Iterate through list
foreach (var o in model.listOfx)
{
Console.WriteLine(o.ID);
}
Console.ReadKey();
}
}