C# 显示列表<;动态>;用剃刀
我正在Razor视图中使用动态(匿名对象)列表并显示它 控制器代码:C# 显示列表<;动态>;用剃刀,c#,asp.net-mvc,linq,razor,expando,C#,Asp.net Mvc,Linq,Razor,Expando,我正在Razor视图中使用动态(匿名对象)列表并显示它 控制器代码: var res = (from c in _context.DM_Suivi_Us_Servis group c by new { c.designation_magasin,c.designation_uf} into g select new {
var res = (from c in _context.DM_Suivi_Us_Servis
group c by new { c.designation_magasin,c.designation_uf} into g
select new
{
g.Key.designation_magasin,
g.Key.designation_uf,
sum = g.Sum(c => c.nbr_us_servis),
}).ToList();
return View(res);
查看页面(Razor视图):
@model IEnumerable
@foreach(模型中的var项目)
{
@item.ToString()
}
显示此结果:
{ designation_magasin = CO3, designation_uf = NRG, sum = 65 }
{ designation_magasin = INC, designation_uf = NRG, sum = 0 } etc..
{designation_magasin=CO3,designation_uf=NRG,sum=65}
{designation_magasin=INC,designation_uf=NRG,sum=0}等。。
但当我尝试显示每个项目属性时:
@foreach (var item in Model)
{
<tr>
<td>@item.sum</td>
<td>@item.designation_uf</td>
<td>@item.designation_magasin</td>
</tr>
}
@foreach(模型中的变量项)
{
@项目.总额
@项目名称
@项目名称\u magasin
}
我收到以下错误
创建新视图模型:
public class YourName
{
public string DesignationMagasin { get; set; }
public string DesignationUf { get; set; }
public int SumServis { get; set; }
}
并使用投影
var res = (from c in _context.DM_Suivi_Us_Servis
group c by new { c.designation_magasin, c.designation_uf } into g
select new YourName
{
DesignationMagasin= g.Key.designation_magasin,
DesignationUf= g.Key.designation_uf,
SumServis= g.Sum(c => c.nbr_us_servis),
}).ToList();
在视图中添加@型号列表
您可以找到有关MVC的更多信息。使用这3个属性创建一个视图模型,并将查询投影到视图模型的集合中,然后将视图模型返回到视图创建一个视图模型,不要懒散,谢谢您的回答我已经尝试创建一个新的视图模型,但是我会经常在不同的ViewModel中使用这种方法,所以我认为最好使用匿名对象。您好,谢谢您的回答,它100%有效,但我会使用很多ViewModels,所以最好使用匿名类型?
var res = (from c in _context.DM_Suivi_Us_Servis
group c by new { c.designation_magasin, c.designation_uf } into g
select new YourName
{
DesignationMagasin= g.Key.designation_magasin,
DesignationUf= g.Key.designation_uf,
SumServis= g.Sum(c => c.nbr_us_servis),
}).ToList();