как объединить две модели и суммировать количество без повторяющихся значений - PullRequest
0 голосов
/ 07 августа 2020

у меня четыре модели

модель orderdetails, fabri c модель, модель fabricStore и модель StockStatu

я хочу получить товары, которые stockStatu == id, и просуммировать количество для каждого случая без удвоения значений orderdetails, я получаю fabri c, который мне нужен, присоединяясь к fabricStore.

this is fabri c model:

public class Fabric
{
    public int ID { get; set; }
    public string FabricName { get; set; }
    //[DataType(DataType.Date)]
   
    [Display(Name = "Color")]
    public Nullable<int> ColorID { get; set; }
    public string Code { get; set; }
    [ForeignKey("ColorID")]
    public virtual Colors Colors { get; set; }
    public virtual List<FabricStore> fabricStore { get; set; }
    public virtual List<Production> production { get; set; }

}

this is fabri c store модель:

public class FabricStore
{
    public int ID { get; set; }
    public int FabricID { get; set; }
    public DateTime ExpenseDate { get; set; }
    public Nullable<int> SupplierID { get; set; }
    public decimal Cost { get; set; }
    public decimal Quantity { get; set; }
    public decimal Total { get; set; }
    public decimal Paid { get; set; }
    public decimal Remain { get; set; }
    public Nullable<int> ReceiptNumber { get; set; }
    public string Notes { get; set; }
    public virtual Fabric fabric { get; set; }
    public virtual Supplier Suppliers { get; set; }
}

это детали заказа модель:

 public class OrderDetail
{
    public int ID { get; set; }
    public int OrderID { get; set; }
    public Nullable<int> ItemID { get; set; }
    public Nullable<int> SizeID { get; set; }
    public Nullable<int> ColorID { get; set; }
    public decimal Price { get; set; }
    
    public Nullable<int> StockStatuID { get; set; }
    public Nullable<int> StockStatuReasonsID { get; set; }
    public int Quantity { get; set; }
    public decimal Total { get; set; }
    public virtual Order order { get; set; }
    public virtual Item item { get; set; }
    public virtual Size size { get; set; }
    [ForeignKey("ColorID")]
    public virtual Colors Colors { get; set; }
    
    public virtual StockStatu stockStatus { get; set; }
    public virtual StockStatuReason StockStatuReasons { get; set; }

}

это модель StockStatu:

public class StockStatu
{
    public int ID { get; set; }
    public string StockStatuName { get; set; }
    [DefaultValue(false)]
    public bool ProductionProblem { get; set; }
    [DefaultValue(false)]
    public bool AccessoriesProblem { get; set; }
    [DefaultValue(false)]
    public bool FabricProblem { get; set; }
    public virtual List<OrderDetail> orderDetails { get; set; }
    public virtual List<StockStatuReason> StockStatuReasons { get; set; }
}

мой контроллер работает нормально без суммарного количества

это контроллер:

public JsonResult FabricRequires(int ID)
    {
        var index = (from o in db.OrderDetails
                    join P in db.Productions on o.ItemID equals P.ItemID
                    where o.StockStatuID == ID && P.fabric.ColorID == o.ColorID
                 
                    select new
                    {
                        FabricCode = P.fabric.Code,
                        FabricName = P.fabric.FabricName,
                        Color = P.fabric.Colors.ColorName,
                        FabricID = P.fabric.ID,
                        itemID = o.ItemID,
                        ItemName = o.item.ItemName
        //ItemQuantity = o.Quantity
    }).Distinct()
       .ToList();         
        return Json(index.ToList(), JsonRequestBehavior.AllowGet);
    }
...