嵌套查询MVC LINQ [英] Nested Query MVC LINQ

查看:76
本文介绍了嵌套查询MVC LINQ的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是 MVC LINQ 的新手.目前,我在该项目上遇到困难并决定发布.

I'm new to MVC and LINQ. Currently I faced difficulty on the project and decide to posted up.

我想要实现的 MVC视图

Cut
----------------------------------
1   20%     
2   40%     
Color
----------------------------------
3   30%    
4   50%     
Perm
----------------------------------
5   10%     

这是我的数据表的一些示例

This is some example of my data table

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){
    <h3 class="page-header">
        @item
    </h3>

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

问题来了,我不知道如何根据视图中他们自己的 Service(例如:Cut,Color,Perm)将数据库中的数据填充到视图中

PROBLEM comes now, I have no idea on how to populate the data from DB into the view according to their own Service(eg: Cut, Color, Perm) in View

我正在考虑这样做,以便根据控制器中的服务存储数据:

I'm thinking of doing this to store the data according to services in my Controller:

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

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

I'm wondering can I push the services data that already according to the services into some kind of array so that I can populate into view?

推荐答案

您可以使用.GroupBy()子句将数据按Service分组.首先创建视图模型以表示要在视图中显示的内容

You can use a .GroupBy() clause to group your data by Service. Start by creating view models to represent what you want to display in the 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; }
}

然后在控制器中

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

在视图中

@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>
    }
}

这篇关于嵌套查询MVC LINQ的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆