此代码运行正常。
var soldQtyForEachItem = await _context.InvoiceProduct
.Where(x => x.ProductId != 0)
.GroupBy(x => x.ProductId)
.Select(grp => new CompanyProducts
{
CompanyProductId = grp.Key,
CompanyProductSoldQuantity = grp.Sum(item => item.QuantitySold)
}).ToListAsync();
问题:
我现在需要加入另一个名为Products的表并根据Id对InvoiceProduct表进行筛选并检索ProductsItemName是product表中的一行;然后所有需要去一个自定义类型"CompanyProducts"下面。
请问我如何实现它?
public class CompanyProducts
{
public int CompanyProductId { get; set; }
public int CompanyProductName { get; set; }
public int CompanyProductSoldQuantity { get; set; }
}
InvoiceProduct表是多对多的,这意味着一个InvoiceId可以有多个productid。
产品表有类似ProductId, ProductsItemName的属性。
最简单的解决方案是将ProductItemName
纳入分组:
var soldQtyForEachItem = await _context.InvoiceProduct
.Where(x => x.ProductId != 0)
.GroupBy(x => new { x.ProductId, x.Product.ProductsItemName } )
.Select(grp => new CompanyProducts
{
CompanyProductId = grp.Key.ProductId,
CompanyProductName = grp.Key.ProductsItemName,
CompanyProductSoldQuantity = grp.Sum(item => item.QuantitySold)
})
.ToListAsync();