C# 如何在视图中打印来自控制器的linq查询结果?
我在控制器中有以下代码C# 如何在视图中打印来自控制器的linq查询结果?,c#,linq,asp.net-mvc-4,C#,Linq,Asp.net Mvc 4,我在控制器中有以下代码 public ActionResult Linq() { List<region> Regiones = db.region.ToList(); List<comuna> Comunas = db.comuna.ToList(); var resultado = from r in Regiones
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();
}
public ActionResult Linq()
{
List Regiones=db.region.ToList();
List Comunas=db.comuna.ToList();
var resultado=来自区域中的r
在r.r_id等于c.c_区域的Comunas中加入c
其中r.r_id==8
选择新的
{
区域=r.r_区域,
comuna=c.c_comuna
};
ViewBag.resultado=resultado;
返回视图();
}
这是我的看法
@{
foreach(var a in ViewBag.resultado)
{
<tr><td>
@a.comuna
</td></tr>
}
}
@{
foreach(ViewBag.resultado中的变量a)
{
@a、 科穆纳
}
}
但是当运行此命令时,我有以下错误:
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:“对象”不包含定义参数“comuna”
发生了什么事?如何打印视图中的所有“comuna”
谢谢 一个可能的解决方案是为结果创建一个新类型,如
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);
}
public ActionResult Linq()
{
List Regiones=db.region.ToList();
List Comunas=db.comuna.ToList();
var resultado=来自区域中的r
在r.r_id等于c.c_区域的Comunas中加入c
其中r.r_id==8
选择新地址
{
区域=r.r_区域,
Comuna=c.c_Comuna
};
返回视图(resultado);
}
并更改视图:
@model System.Collections.Generic.IEnumerable<Address>
@{
foreach(var a in Model)
{
<tr><td>
@a.Comuna
</td></tr>
}
}
@model System.Collections.Generic.IEnumerable
@{
foreach(模型中的var a)
{
@a、 科穆纳
}
}
您不应该在linq查询之后将其转换为.ToList()
吗?我试过了,但没有这样做。谢谢@Maartenhebink foreach已经迭代了IEnumerable
,因此没有必要将其放入列表中。威震天的解决方案应该有效。您是否尝试过在填充视图包的位置设置断点?看看它是否真的被填满了,以及填充了什么?@AlexanderDerck感谢您的更正工作!谢谢但为什么在上面,我只写并展示{地区:一些,科穆纳:一些}?@DiegoFlores很高兴能提供帮助。你把@放在哪里了?我对Visual studio的看法,而不是在这篇文章中(对不起,我的“泰山”英语是智利语)