c# - LINQ:使用 Linq 连接多个表列并从子表值中查找聚合总和

标签 c# mysql sql .net linq

我正在使用 Linq(代码优先方法)查询从数据库检索数据,但在使用以下 linq 查询时无法获得类似的结果:

from msi in db.MainSaleInvoiceTbls
join dsi in db.DetialSaleInvoiceTbls on msi.Id equals dsi.MainSaleInvoiceId
join ca in db.CustomerAccounts on msi.CustomerId equals ca.Id
join cg in db.MiscLists on ca.CustomerGroupId equals cg.Id 
where msi.IsActive == true && msi.CompanyId == UniversalInfo.UserCompany.Id && msi.MainSaleInvoiceDataType == MainSaleInvoiceType.SOInvoice
group msi by new { dsi,msi.Date,msi.FinancialVoucher,msi.SaleOrderPrefix,msi.SaleOrderNumber,msi.SalesId,ca.CustomerName,ca.AccountCode,cg.Name }
into mainSaleInvoice
from dx in mainSaleInvoice.DefaultIfEmpty()
// orderby main.Id
select new
{
     Date = mainSaleInvoice.Key.Date,
     Voucher = mainSaleInvoice.Key.FinancialVoucher,
     InvoiceAccount = mainSaleInvoice.Key.AccountCode,
     CustomerName = mainSaleInvoice.Key.CustomerName,
     CustomerGroup = mainSaleInvoice.Key.Name,
     Invoice = mainSaleInvoice.Key.SaleOrderPrefix + mainSaleInvoice.Key.SaleOrderNumber,
     PurchaseOrder = mainSaleInvoice.Key.SalesId,
     SalesTax = "",
     InvoiceAmount = mainSaleInvoice.Sum(x => (Double)(mainSaleInvoice.Key.Quantity * mainSaleInvoice.Key.UnitPrice))
     }).ToList() 

在linq中,我需要从子表中获取(unitprice*数量)shortdatetimeString()sum()详细销售发票表 作为查询编写的新手,我不知道我在哪里以及哪里做错了。任何建议将不胜感激。

最佳答案

 var list=from msi in db.MainSaleInvoiceTbls
          join dsi in db.DetialSaleInvoiceTbls on msi.Id equals dsi.MainSaleInvoiceId
          join ca in db.CustomerAccounts on msi.CustomerId equals ca.Id
          join cg in db.MiscLists on ca.CustomerGroupId equals cg.Id into a
          where msi.IsActive == true && msi.CompanyId == UniversalInfo.UserCompany.Id 
          && msi.MainSaleInvoiceDataType == MainSaleInvoiceType.SOInvoice
          from cg in a.DefaultIfEmpty()
          select new
          {mainSaleInvoice.Date, 
           mainSaleInvoice.FinancialVoucher,mainSaleInvoice.AccountCode,
           mainSaleInvoice.CustomerName,mainSaleInvoice.Name,
           mainSaleInvoice.SaleOrderPrefix, mainSaleInvoice.SaleOrderNumber,
           mainSaleInvoice.SalesId, }).sum(x=>x. (mainSaleInvoice.Quantity * 
           mainSaleInvoice.UnitPrice)).groupby msi new 
          {msi.Date,msi.FinancialVoucher,msi.SaleOrderPrefix,msi.SaleOrderNumber,
           msi.SalesId};


          Date = mainSaleInvoice.Date;
          Voucher = mainSaleInvoice.FinancialVoucher;
          InvoiceAccount = mainSaleInvoice.AccountCode;
          CustomerName = mainSaleInvoice.CustomerName;
          CustomerGroup = mainSaleInvoice.Name;
          Invoice = mainSaleInvoice.SaleOrderPrefix + 
          mainSaleInvoice.SaleOrderNumber;
          PurchaseOrder = mainSaleInvoice.SalesId;
          SalesTax = "";
          InvoiceAmount =list;

关于c# - LINQ:使用 Linq 连接多个表列并从子表值中查找聚合总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59676134/

相关文章:

c# - 在 C# 图表的数据系列中插入中断

c# - 注释斜杠//缩进太左(Rider)

c# - EF 5、.Net 4.5 加载多对一子对象时出现问题

PHP 获取两行但仅从最后一行上传文件

php - 将mysql数据库中的行分成不同的变量

SQL 服务器 : How to seperate XML nodes in different rows

对引用其他列的列进行 SQL 检查约束

c# - 即使使用 InfiniteAbsoluteExpiration,值也可以从 ObjectCache 中逐出吗?

mysql - 从迁移创建存储过程

mysql - 何时使用 float 与十进制数