0

我正在尝试创建一个匿名类型列表,如下所示,但我在某处犯了错误

for (int i = 0; i < 10; i++)
{    
    var list = new[]
    {
        new { Number = i, Name = string.Concat("name",i) }
    };
}

例如

var o1 = new { Id = 1, Name = "Name1" }; 
var o2 = new { Id = 2, Name = "Name2" };

var list = new[] { o1, o2 }.ToList();

如何在运行时做同样的事情?

4

5 回答 5

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();
于 2013-05-15T05:14:00.383 回答
3

您是否正在考虑以下内容(使用 LINQ):

var anonList = Enumerable
    .Range(1, 10)
    .Select(i => new { 
        ID = i, 
        Name = String.Format("Name{0}", i)
    });

您当然可以将 Enumerable.Range() 替换为任何提供列表供您选择的内容。

于 2013-05-15T05:24:04.893 回答
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();
于 2013-05-15T05:18:53.647 回答
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) }

            });
        }    
于 2013-05-15T05:21:12.430 回答
0
int i = 0;
while(i < 10)
{
    list.Add(new { Number = i, Name = string.Concat("name",i) });
    i++;
}
于 2013-05-15T05:24:17.763 回答