我应该为这个匿名类型创建一个专用类吗?

时间:2013-01-08 13:57:18

标签: c# linq

我的一个功能

中有以下代码
goodsQuery = db.Goods.Select(g => new { g.name, g.description, g.image, g.price });

如果已在方法中定义,我将使用 var 类型。 但是当变量定义为类字段时我必须使用什么类型?

当然IEnumerable<Goods>并不顺利。 尝试使用IEnumerable<object>,但结果是一样的。

我应该为此创建一个新类吗?

2 个答案:

答案 0 :(得分:4)

您正在使用anonymous type。这只能存在于函数的范围内。如果您希望结果在属性中可用,则需要为此创建一个真正的类。

  

您不能声明字段,属性,事件或返回类型   具有匿名类型的方法。同样,你不能声明   方法,属性,构造函数或索引器的形式参数   有匿名类型。传递匿名类型或集合   包含匿名类型,作为方法的参数,您可以   将参数声明为类型对象。但是,做到这一点就失败了   强打字的目的。如果必须存储查询结果或传递它们   在方法边界之外,考虑使用普通的命名结构   或类而不是匿名类型。

答案 1 :(得分:1)

如果使用C#4,如果创建类不可行,也可以使用dynamic ...

但似乎类Good(奇怪的名字)在这里是更好的选择。

相关问题