我正在尝试使用groupby
我有2个表格,你可以在这里看到结构:
public partial class Inovice
{
public Inovice()
{
this.Payments = new HashSet<Payment>();
this.InvoiceDetails = new HashSet<InvoiceDetail>();
}
public PersianCalendar objPersianCalender = new PersianCalendar();
[DisplayName("شناسه")]
public int Id { get; set; }
[DisplayName("شناسه کاربر")]
public int MemberId { get; set; }
public virtual ICollection<InvoiceDetail> InvoiceDetails { get; set; }
}
此表包含客户发票,另一个表包含客户购买的商品。结构如下:
public partial class InvoiceDetail
{
[DisplayName("شناسه ")]
public int Id { get; set; }
[DisplayName("مقدار")]
public Nullable<double> Amount { get; set; }
[DisplayName("شناسه فاکتور")]
public int InoviceId { get; set; }
public Nullable<bool> IsReturned { get; set; }
public virtual Inovice Inovice { get; set; }
}
我的价值观:
MemberOrCustomer sumOfAmountvalues
1 12
1 8
2 12
2 11
这两个表在invoiceid
上有关系。我需要为每个amount(InvoiceDetail)
求和memberId(Invoice)
值,例如:
MemberOrCustomer sumOfAmountvalues
1 20
2 23
我为此做了这段代码,但它不起作用:
var result= invoices.GroupBy(i => i.MemberId).Select(group=>new {Amount=group.Sum(Amount)} );
祝你好运
答案 0 :(得分:1)
好吧,您可以使用发票详细信息列表。
var result = invoicesDetails.GroupBy(id => id.Invoice.MemberId)
.Select(g => new {
MemberOrCustomer = g.Key,
Amount = g.Sum(x => x.Amount)
});
其中invoiceDetails可能是
invoices.SelectMany(x => x.InvoiceDetails)
所以
invoices
.SelectMany(x => x.InvoiceDetails)
.GroupBy(id => id.Invoice.MemberId)
.Select(g => new {
MemberOrCustomer = g.Key,
Amount = g.Sum(x => x.Amount)
});