Рассчитать дебиторскую задолженность с помощью LINQ - PullRequest
0 голосов
/ 08 апреля 2019

Как рассчитать дебиторскую задолженность с помощью LINQ.

Я пробовал это, но застрял здесь.Я сделал это в SQL, но я хочу это в LINQ, чтобы я мог использовать его в своем проекте MVC.

var sale = saleslist.GroupBy(s => s.BuyerId).Select(s => s.Sum(u => u.Amount)).ToList();
var receipt = receiptslist.GroupBy(r => r.StakeHolderId).Select(t => t.Sum(u => u.Amount)).ToList();

List<AccountReceivablesVM> res = db.StakeHolders
    .Where(r=>r.StakeHolderTypeId == "0b85a69e-55f2-4142-a49d-98e22aa7ca10")
    .Select(rvm => new AccountReceivablesVM
    {
        CompanyName = rvm.CompanyName,
        Receivables = //don't know what to do here
    }).ToList();

Модели:

public class StakeHolder
{
    public string StakeHolderId { get; set; }
    public string CompanyName { get; set; }
    public string Address { get; set; }
    public string Contact { get; set; }
    public string StakeHolderTypeId { get; set; }
}


public class Sale
{
    public string SaleId { get; set; }
    public string RefNo { get; set; }
    public DateTime Date { get; set; }
    public string BuyerId { get; set; }
    public string Description { get; set; }
    public Nullable<double> Amount { get; set; }
}


public class PaymentsAndReceipt
{
    public string PaymentAndReceiptId { get; set; }
    public Nullable<int> VoucherNo { get; set; }
    public DateTime Date { get; set; }
    public string StakeHolderId { get; set; }
    public string Description { get; set; }
    public Nullable<double> Amount { get; set; }
}

public class AccountReceivablesVM
{
    public string CompanyName { get; set; }
    public Nullable<double> Receivables { get; set; }
}

enter image description here

enter image description here

Ожидаемый результат:

enter image description here

1 Ответ

0 голосов
/ 08 апреля 2019

Вы можете сначала присоединиться с идентификатором стейкхолдера, а затем суммировать сумму, а затем сгруппировать по названию компании и идентификатору стейкхолдера, однако я пишу код в Linq. Я считаю, что стейкхолдер является первичным ключом вашей таблицы только потому, что вы не упомянули схему стейкхолдера.

        var result = from s in db.StakeHolders 
                    join pr in db.PaymentsAndReceipt on s.StakeHolderId equals pr.StakeHolderId
                    where StakeHolderTypeId == "0b85a69e-55f2-4142-a49d-98e22aa7ca10"
                    group s by new { s.StakeHolderId,s.CompanyName} into p
                    select new
                    {
                      StakeHolderId= p.Key.StakeHolderId,
                      CompanyName= p.Key.CompanyName, 
                      Receivables = string.Format("{0:C}", p.Sum(y => y.Amount))
                   };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...