LINQ с JOIN, GROUP, SUM () и возвращает новый SELECT - PullRequest
1 голос
/ 10 марта 2020

возможно выполнить LINQ следующим образом SQL:

select invoice.credit, ((sum(detailsInvoice.amount) - sum(detailsInvoice.discount))+ sum(detailsInvoice.tax)) as total
from detailsInvoice
join invoice on detailsInvoice.invoiceID = invoice.ID
where invoice.carga = 1428 and invoice.ID <> 0
group by invoice.credit

Я получаю этот результат в SQL

enter image description here

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

Ответы [ 2 ]

1 голос
/ 10 марта 2020

вы должны сделать что-то подобное, пожалуйста, извините за любые опечатки, не использовали компилятор для тестирования.

var result = db.invoice.Include(x=>x.detailsInvoice).
                               GroupBy(x=>invoice.credit).
                               Select(y=> new {  
                                credit = y.Key,
                                Total =  (y.Sum(z=>z.detailsInvoice.amount) - y.Sum(z=>z.detailsInvoice.discount) + y.Sum(z=>detailsInvoice.tax))
                                });

Надеюсь, это поможет!

0 голосов
/ 10 марта 2020

ваш ответ дал мне хорошее представление о том, что делать. что-то важное, что я забыл упомянуть, это таблица счетов-фактур, и у деталей Invoice нет никаких отношений.

Вот что я сделал:

var result = (from _invoice in ruterosContext.Invoice
                join _details in ruterosContext.DetailsInvoice
                on new { id = _invoice.ID, reference = _invoice.Reference } equals 
                new { id = _details.invoiceID, reference = _details.Reference }   
                where _invoice.ID != 0 && _invoice.Carga == 1428
                select new {
                    Credit = _invoice.credit,
                    amount = _details.amount,
                    discount = _details.discount, 
                    tax = _details.tax
                }).GroupBy(x => x.credit).
                     Select(y => new { Credit = y.Key, 
                     Total = (y.Sum(z => z.amount) - y.Sum(z => z.discount)) + y.Sum(x => x.tax) });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...