按两个条件(日期和车辆编号)分组的数据库记录并在索引页面中显示错误

问题描述 投票:0回答:1

我是asp.net MVC的新手。我希望任何人都可以帮助我。

这是用于维护多辆车的燃油费用记录的程序。我想创建一个消息,如果一个月中有超过5条特定车辆的燃油输入记录,则会出现此消息。例如,当“ 2020年6月”一个月内车辆的燃油输入记录数达到5个以上时,应在索引页或主页上显示错误消息。我一直在寻找这个,但没有运气。

来自模型,控制器和视图的相关位在下面。

车辆列表型号:

namespace VehicleReg2.Models
{
    public class VehicleList
    {   [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public byte Id { get; set; }
        public string VType { get; set; }
        public string RegNumber { get; set; }
        public string ModelMake { get; set; }
}}

燃油模型:

namespace VehicleReg2.Models
{
    public class Fuel
    {
        public int Id { get; set; }

        [DataType(DataType.Currency)]
        public decimal FAmount { get; set; }

        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MMM/yyyy}")]
        public DateTime FDate { get; set; }

        public VehicleList VehicleList { get; set; }
        public byte VehicleListId { get; set; }

        public double FQty { get; set; }     
    }}

燃油控制器索引:

public ViewResult Index()
        {var fuel = _context.Fuels.Include(c => c.VehicleList).ToList();
         return View(fuel);
        }
c# asp.net-mvc asp.net-mvc-5
1个回答
0
投票

您将必须按Date分组,然后再进行Count控件。我没有尝试下面的查询,但是它应该与您想要的类似;

db.Fuels.GroupBy(x => x.FDate.Date)
            .Where(x => x.ToList().VehicleList.RegNumber.Count() > 5)
            .ToDictionary(x => x.Key, x => x.ToList());

下面的查询在每个Fuel中找到一个特定的Vehicle的所有month条目(超过5个)

db.Fuels.GroupBy(x => new { x.FDate.Date, x.VehicleListId })
            .Where(x => x.Count() > 5)
            .ToDictionary(x => x.Key, x => x.ToList());
© www.soinside.com 2019 - 2024. All rights reserved.