我的一个函数中有以下代码
goodsQuery = db.Goods.Select(g => new { g.name, g.description, g.image, g.price });
如果它已在方法中定义,我将使用var类型。但是当变量定义为类字段时我必须使用什么类型?
当然IEnumerable<Goods>
不会顺利。尝试使用IEnumerable<object>
但结果是一样的。
我应该为此创建一个新课程吗?
您正在使用匿名类型。这只能存在于函数的范围内。如果您希望结果可用于属性,则需要为此创建一个真实的类。
您不能将字段、属性、事件或方法的返回类型声明为具有匿名类型。同样,您不能将方法、属性、构造函数或索引器的形式参数声明为具有匿名类型。要将匿名类型或包含匿名类型的集合作为参数传递给方法,可以将参数声明为类型对象。然而,这样做违背了强类型的目的。如果您必须存储查询结果或将它们传递到方法边界之外,请考虑使用普通的命名结构或类而不是匿名类型。
如果使用 C# 4,dynamic
如果创建类不可行,您也可以使用...
但似乎类Good
(奇怪的名字)在这里是一个更好的选择。