0

这是我在控制器中的 Linq

 List<ProfitsModel> prof = new List<ProfitsModel>();

            var categories =
                from p in prof
                group p by p.IdCategory.Name into g
                select new { Category = g.Key, TotalUnitsInStock = g.Sum(p => p.Value) };

            return View(categories);

如何在我的视图中看到这个选择?

4

2 回答 2

1

看起来您正在构建匿名对象的集合。您应该做的是,创建一个 ViewModel 并通过更新投影部分在您的 LINQ 查询中使用它。因此,它返回一个匿名项目列表,而是返回一个视图模型类实例的列表

public class StockDetail
{ 
  public string CategoryName { set;get;}
  public int TotalItems { set;get;}
}

现在在您的 GET 操作方法中,更新 LINQ 表达式的投影部分并将结果加载到StockDetail

public ActionResult GetCategories()
{
   List<ProfitsModel> prof =GetCollectionOfProfitsModelFromSomewhere();
   var items= from p in prof
                group p by p.IdCategory.Name into g select new StockDetail
                   { Category = g.Key, TotalUnitsInStock = g.Sum(p => p.Value) };
  return View(items);
}

将您的视图强类型化为 StockDetails 集合

@model List<StockDetail>

@foreach(item in Model)
{
  <p>@item.Category </p>
  <p>@item.TotalUnitsInStock.ToString()</p>

}
于 2013-03-13T20:18:46.357 回答
0

将模型绑定到视图并向模型添加列表或可枚举属性。然后,您可以直接在视图中对可枚举对象进行 foreach,并在已定义的 HTML 结构中渲染出每个项目。

如果您的模型是匿名类型,那么您可以使用 ViewBag/ViewData 来存储结果。

于 2013-03-13T20:12:07.290 回答