我正在尝试创建一个匿名类型列表,如下所示,但我在某处犯了错误
for (int i = 0; i < 10; i++)
{
var list = new[]
{
new { Number = i, Name = string.Concat("name",i) }
};
}
E.g。
var o1 = new { Id = 1, Name = "Name1" };
var o2 = new { Id = 2, Name = "Name2" };
var list = new[] { o1, o2 }.ToList();
如何在运行时执行相同操作?
需要帮助。
答案 0 :(得分:5)
没有错误......但集合总是1
这是因为您正在每次迭代中创建一个新列表
您可以尝试:
var list = new[] { new { Number = 0, Name = "Name1" } }.ToList(); //just to create a
//list of anonymous type object
list.Clear();
for (int i = 0; i < 10; i++)
{
list.Add(new { Number = i, Name = string.Concat("name",i) });
}
或者一种方法是使用List<Object>
,如:
List<object> list = new List<object>();
for (int i = 0; i < 10; i++)
{
list.Add(new { Number = i, Name = string.Concat("name",i) });
}
或者您可以使用Enumerable.Range之类的
var list = Enumerable.Range(0, 10)
.Select(i => new { Number = i, Name = "SomeName" })
.ToList();
答案 1 :(得分:3)
您是否正在考虑以下内容(使用LINQ):
var anonList = Enumerable
.Range(1, 10)
.Select(i => new {
ID = i,
Name = String.Format("Name{0}", i)
});
您当然可以将Enumerable.Range()替换为可以从中选择的列表。
答案 2 :(得分:0)
您需要一个List对象来存储它。
List<Object> o = new List<Object>();
for (int i = 0; i < 10; i++)
{
o.Add(new { Number = i, Name = string.Concat("name",i) });
}
o.Dump();
答案 3 :(得分:0)
首先定义一个列表,然后将值存储在For循环
中List<Object> NewList = new List<Object>();
for (int i = 0; i < 10; i++)
{
NewList.Add(
{
new { Number = i, Name = string.Concat("name",i) }
});
}
答案 4 :(得分:0)
int i = 0;
while(i < 10)
{
list.Add(new { Number = i, Name = string.Concat("name",i) });
i++;
}