我有这个linq查询
var impuestos = conceptos
.GroupBy(a => a.ImpuestoId)
.Select(a => new
{
id = a.Key,
montoImpuesto = a.Sum(b => b.montoImpuesto),
impuestoNombre = a.FirstOrDefault().impuesto.Nombre,
impuestoTipo = a.FirstOrDefault().impuesto.Tipo,
})
.ToList();
ViewBag.grupo = impuestos;
我想在视图中显示它。它尝试了这个
@foreach (var impuesto in ViewBag.grupo)
{
<tr>
<td>
@impuesto.id
</td>
<td>
@impuesto.Nombre
</td>
<td>
@impuesto.montoImpuesto
</td>
</tr>
}
但我收到一条错误消息,说明没有定义&#39; id&#39;在对象中。我已经尝试在主foreach中添加foreach,但是我得到了不同的错误。什么是正确的方法?
答案 0 :(得分:0)
一旦添加到ViewBag
的对象转换为类型object
(已装箱)。在使用之前,您必须将其拆分为特定类型。 select查询返回一个匿名对象,而是创建一个实体类,用于返回分组集合。在视图上将ViewBag.grupo
转换为IEnumerable<T>
,然后在foreach循环中使用它。
答案 1 :(得分:0)
您不能将匿名对象用作模型(嗯,您可以,但它们会以object
传递,并且您无法将它们转换为原始类型,因为它&# 39;匿名!)。创建模型类,或使用hack like this one。