繁体   English   中英

实体框架中按属性求和的相关集合的总和(延迟加载)

[英]Sum Related Collection By Property in Entity Framework (Lazy Loaded)

我在实体框架查询方面需要一些帮助。 我有以下实体:

public class Invoice
{
    public Guid Id { get; set; }
    public DateTime CreateDate { get; set; }
    [ForeignKey("CreatedById")]
    public virtual ApplicationUser CreatedBy { get; set; }
    public Guid CreatedById { get; set; }
    public bool Approved { get; set; }
    public virtual ICollection<InvoiceDetail> Details { get; set; }
}

public class InvoiceDetail
{
    public Guid Id { get; set; }
    [ForeignKey("InvoiceId")]
    public virtual Invoice Invoice { get; set; }
    public Guid InvoiceId { get; set; }
    public string Item { get; set; }
    public string Description { get; set; }
    public decimal Quantity { get; set; }
    public decimal UnitCost { get; set; }
    public decimal Discount { get; set; }
}

我正在尝试汇总批准发票的所有项目的总和。 我遇到的问题是,一旦我为“已批准” = 1进行过滤,便会到达InvoiceDetail级别的语法:

var myInvoices = context.Invoices.Where(i => i.CreatedById == userId).Include(i => i.CreatedBy).Include(i => i.Details);

var approvedTotal = myInvoices.Where(i => i.Approved == 1).Select([GET TO DETAILS???]);

// my goal is to get the following sum for each detail for all of the approved invoices:
// ((d.Quantity * d.UnitCost) - d.Discount)

假设您希望在执行给定计算后获得所有详细信息的总和,则可以执行以下操作:

var approvedTotal = invoices.Where(invoice => invoice.Approved)
            .Select(invoice => invoice.Details.Sum(detail => ((detail.Quantity * detail.UnitCost) - detail.Discount)));

因此,这给您每张发票一个总额。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM