【发布时间】:2009-03-04 22:08:47
【问题描述】:
在 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});
....
}
【问题讨论】:
-
请注意,数组中所有对象的类型必须相同。您可能很少需要帮助进行演员阵容,尤其是对于空值
new[] { new{ Id = (int?)null, Name = "Foo" }, new { Id = (int?)1, Name = "Foo" }} -
匿名类型被设计用作临时存储,在大多数情况下,您可以在 LINQ 选择语句中使用 Select(i=>new {i.ID,i.Name}); 创建它们。如果您将 while 子句重新定义为 LINQ.Where 语句,则将返回正确类型的 IEnumerable ,您永远不需要该列表,如果需要,您只需调用 ToList 即可
标签: c# .net generics anonymous-types