加盟项目清单

时间:2019-04-27 10:18:20

标签: c# linq

我想从不同的List实现以下格式的数据。

Data I want to achieve

使用以下代码:

List<SalesOrder> SalesOrder = new List<SalesOrder>();
List<Sales> Sales = new List<Sales>();

SalesOrder.Add(new SalesOrder { VoucherNumber = "1", Date = "01-04-2018", LedgerName = "Sales Party", Refernce = "1", StockItem = "Item 1", Description = "", qnt = "1200", Rate = "120", Amount = "14000" });
SalesOrder.Add(new SalesOrder { VoucherNumber = "1", Date = "01-04-2018", LedgerName = "Sales Party", Refernce = "1", StockItem = "Item 2", Description = "", qnt = "78", Rate = "980", Amount = "76440" });
SalesOrder.Add(new SalesOrder { VoucherNumber = "2", Date = "04-04-2018", LedgerName = "Sales Party", Refernce = "2", StockItem = "Item 3", Description = "", qnt = "350", Rate = "345", Amount = "120750" });

Sales.Add(new Sales { VoucherNumber = "1", Date = "05-04-2018", Refernce = "1", LedgerName = "SalePartyLedgerName", Description = "", qnt = "100 nos", Rate = "120", Amount = "12000" });
Sales.Add(new Sales { VoucherNumber = "1", Date = "05-04-2018", Refernce = "1", LedgerName = "SalePartyLedgerName", Description = "", qnt = "40 nos", Rate = "980", Amount = "39200" });



var res = from so in SalesOrder
          join s in Sales
          on so.VoucherNumber equals s.Refernce into ps
          from s in ps.DefaultIfEmpty()
          select new
          {
              SONO = so.VoucherNumber,
              SODate = so.Date,
              SoCustomer = so.LedgerName,
              SoItem = so.StockItem,
              SoDescription = so.Description,
              SoUnit = so.qnt,
              SoRate = so.Rate,
              SoAmount = so.Amount,

              SInvNum = s?.VoucherNumber ?? string.Empty,
              SDate = s?.Date ?? string.Empty,
              SQnt = s?.qnt ?? string.Empty,
              SRate = s?.Rate ?? string.Empty,
              SAmount = s?.Amount ?? string.Empty                 
          };

我得到以下结果: Result of the above code

我想基于引用号合并这两个列表。目前我尝试过的是基于左连接的,但是该项目正在按第二个列表中存在的项目数进行重复。您可能会注意到,第一个图像仅显示了包含“ 1”作为数字的2行数据,而我的c#代码正在创建其中的4行,并且数据也在下一行中重复出现并随地吐痰。

要获得所需的结果,我需要做哪些更改?

任何有关示例的帮助将不胜感激。

对不起,我的英语不好。

0 个答案:

没有答案
相关问题