如何在视图中从控制器打印 LINQ 查询的结果

本文关键字:LINQ 打印 查询 结果 控制器 视图 | 更新日期: 2023-09-27 18:37:19

我在控制器中有以下代码

  public ActionResult Linq()
        {
            List<region> Regiones = db.region.ToList();
            List<comuna> Comunas = db.comuna.ToList();
            var  resultado = from r in Regiones
                            join c in Comunas on r.r_id equals c.c_region
                            where r.r_id == 8
                            select new
                            {
                                region = r.r_region,
                                comuna = c.c_comuna
                            };
            ViewBag.resultado = resultado;
            return View();
        }

而这在视图中

 @{ 
                           foreach(var a in ViewBag.resultado)
                           {
                              <tr><td>
                                  @a.comuna
                              </td></tr> 
                           }
                       }

但是当这个运行时,我有以下错误:

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'object' no contiene una definición para 'comuna'.

发生了什么?我如何在视图中打印所有"comuna"?

谢谢!

如何在视图中从控制器打印 LINQ 查询的结果

可能的解决方案之一是为结果创建一个新类型,例如

public class Address //some good name
{
    public int Region  {get;set;};
    public string Comuna {get;set;} ;
}

他们修改您的操作

public ActionResult Linq()
{
    List<region> Regiones = db.region.ToList();
    List<comuna> Comunas = db.comuna.ToList();
    var  resultado = from r in Regiones
                    join c in Comunas on r.r_id equals c.c_region
                    where r.r_id == 8
                    select new Address
                    {
                        Region = r.r_region,
                        Comuna = c.c_comuna
                    };
    return View(resultado);
}

并更改视图:

 @model System.Collections.Generic.IEnumerable<Address>
 @{ 
   foreach(var a in Model)
   {
      <tr><td>
          @a.Comuna
      </td></tr> 
   }
}