匿名类的通用列表

匿名类的通用列表

在C#3.0中,您可以使用以下语法创建匿名类


var o = new { Id = 1, Name = "Foo" };

有没有办法将这些匿名类添加到通用列表?


例:


var o = new { Id = 1, Name = "Foo" };

var o1 = new { Id = 2, Name = "Bar" };


List<var> list = new List<var>();

list.Add(o);

list.Add(o1);

另一个例子:


List<var> list = new List<var>();


while (....)

{

    ....

    list.Add(new {Id = x, Name = y});

    ....

}


慕田峪7331174
浏览 458回答 3
3回答

慕尼黑8549860

你可以这样做:var list = new[] { o, o1 }.ToList();有很多方法可以为这只猫设置皮肤,但基本上它们都会在某处使用类型推断 - 这意味着你必须调用泛型方法(可能作为扩展方法)。另一个例子可能是:public static List<T> CreateList<T>(params T[] elements){&nbsp; &nbsp; &nbsp;return new List<T>(elements);}var list = CreateList(o, o1);你明白了:)

慕森卡

有很多方法可以做到这一点,但是这里的一些响应是创建一个包含垃圾元素的列表,这需要您清除列表。如果要查找泛型类型的空列表,请使用“针对元组列表选择”来创建空列表。不会实例化任何元素。这是创建空列表的单线程:&nbsp;var emptyList = new List<Tuple<int, string>>()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .Select(t => new { Id = t.Item1, Name = t.Item2 }).ToList();然后您可以使用您的泛型类型添加到它:&nbsp;emptyList.Add(new { Id = 1, Name = "foo" });&nbsp;emptyList.Add(new { Id = 2, Name = "bar" });作为替代方案,您可以执行类似下面的操作来创建空列表(但是,我更喜欢第一个示例,因为您也可以将它用于填充的元组集合):&nbsp;var emptyList = new List<object>()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .Select(t => new { Id = default(int), Name = default(string) }).ToList();&nbsp; &nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP