gpt4 book ai didi

c# - 嵌套查询 MVC LINQ

转载 作者:太空狗 更新时间:2023-10-30 01:16:04 24 4
gpt4 key购买 nike

我是 MVCLINQ 的新手。目前我在项目上遇到困难并决定发布。

我想要实现的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

我的 Controller :

var services = (from ps in db.PS
select ps).Distinct().ToArray();
ViewBag.services = services;

我的看法:

@foreach (var item in ViewBag.services){
<h3 class="page-header">
@item
</h3>

//Table TAG INSERT Here: ID, Offer, Service
}

现在问题来了,我不知道如何根据他们自己的 Service(eg: Cut, Color, Perm) in View 将数据从 DB 填充到 View 中

我正在考虑这样做以根据我的 Controller 中的服务存储数据:

foreach (var i in services){
var servicesdata = (from ps in db.PS
where ps.Service == i
select ps).ToArray();
}

我想知道我是否可以将已经根据服务的服务数据推送到某种数组中,以便我可以填充到 View 中?

最佳答案

您可以使用 .GroupBy() 子句按 Service 对数据进行分组。首先创建 View 模型来表示您要在 View 中显示的内容

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<OfferVM> Offers { get; set; }
}

然后在 Controller 中

IEnumerable<ServiceVM> 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);

在 View 中

@model IEnumerable<ServiceVM>
@foreach (var service in Model)
{
<h2>@service.Name</h2>
foreach (var item in service.Offers)
{
<span>@item.ID</span>
<span>@Html.DisplayFor(m => item.Offer)</span>
}
}

关于c# - 嵌套查询 MVC LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36759641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com