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