嵌套查询MVC LINQ
我是MVC和LINQ的新手。 目前我在项目上面临困难并决定张贴。
我希望实现的MVC-View
Cut ---------------------------------- 1 20% 2 40% Color ---------------------------------- 3 30% 4 50% Perm ---------------------------------- 5 10%
这是我的数据表的一些示例
ID Offer Service ------------------- 1 20% Cut 2 40% Cut 3 30% Color 4 50% Color 5 10% Perm
我的控制器:
var services = (from ps in db.PS select ps).Distinct().ToArray(); ViewBag.services = services;
我的看法:
@foreach (var item in ViewBag.services){ @item
//Table TAG INSERT Here: ID, Offer, Service }
问题来了,我不知道如何根据自己的服务(例如:Cut,Color,Perm)在视图中将数据从DB填充到视图中
我正在考虑根据我的Controller中的服务来存储数据:
foreach (var i in services){ var servicesdata = (from ps in db.PS where ps.Service == i select ps).ToArray(); }
我想知道我可以将已经根据服务的服务数据推送到某种数组中,以便我可以填充到视图中吗?
您可以使用.GroupBy()
子句按Service
对数据进行分组。 首先创建视图模型以表示要在视图中显示的内容
public class OfferVM { public int ID { get; set; } [DisplayFormat(DataFormatString = "{0:P0}")] public float Offer { get; set; } // assumes you store this as float in the db } public class ServiceVM { public string Name { get; set; } public IEnumerable Offers { get; set; } }
然后在控制器中
IEnumerable model = db.PS.GroupBy(x => x.Service).Select(x => new ServiceVM() { Name = x.Key, Offers = x.Select(y => new OfferVM() { ID = y.ID, Offer = y.Offer }) }); return View(model);
在视图中
@model IEnumerable @foreach (var service in Model) { @service.Name
foreach (var item in service.Offers) { @item.ID @Html.DisplayFor(m => item.Offer) } }
ViewBag是一个动态属性,您可以插入ViewBag,但是当您从ViewBag检索数据时,首先需要转换它。
@foreach (var item in (List)ViewBag.services){ @item
//Table TAG INSERT Here: ID, Offer, Service }