如何在asp.mvc视图中显示组数据?

时间:2015-05-19 10:15:50

标签: c# asp.net asp.net-mvc linq

我有这个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,但是我得到了不同的错误。什么是正确的方法?

2 个答案:

答案 0 :(得分:0)

一旦添加到ViewBag的对象转换为类型object(已装箱)。在使用之前,您必须将其拆分为特定类型。 select查询返回一个匿名对象,而是创建一个实体类,用于返回分组集合。在视图上将ViewBag.grupo转换为IEnumerable<T>,然后在foreach循环中使用它。

答案 1 :(得分:0)

您不能将匿名对象用作模型(嗯,您可以,但它们会以object传递,并且您无法将它们转换为原始类型,因为它&# 39;匿名!)。创建模型类,或使用hack like this one