Конвертировать SQL в LINQ с JOIN, GROUP BY, SUM, умножить значения два списка - PullRequest
0 голосов
/ 13 мая 2018
SELECT
    (SUM(L.total_linea) * I.porcentaje / 100) AS iva
FROM 
    linea_ventas L 
JOIN 
    iva I ON L.id_iva = I.id_iva
GROUP BY 
    L.id_iva

Я пытался написать запрос с помощью программы LINQPad 5 непосредственно к моей базе данных, прежде чем добавить его в свой код, но я заблокирован здесь:

 from l in linea_ventas
    join i in ivas on l.id_iva equals i.id_iva
    group l by new { l.id_iva } into g
    select new
    {
       iva = g.Sum(l => l.total_linea)
    }

1 Ответ

0 голосов
/ 14 мая 2018

Этот SQL-запрос некорректен, так как вы должны принести то, что есть в предложении SELECT в предложении GROUP BY (если вы не используете его в функции агрегирования), поэтому здесь вы должны использовать I.porcentaje в GROUP BY, хотя я делаю Не думайте, что группировка по процентам - это то, что вам нужно.

Полагаю, вы хотите сложить все total_linea с учетом porcentaje, поэтому, например, вы можете написать свой запрос следующим образом:

Вы присоединились к таблицам правильно, после объединения, потому что вам нужны только id_iva и total_linea и porcentaje, собрать только эти значения в анонимном типе, затем сгруппируйте их по id_iva (как вы сделали сами), затем выберите значения в ваших группах и выполните вычисления:

var result = from l in linea_ventas
    join i in ivas on l.id_iva equals i.id_iva
    select new {
                 l.id_iva,
                 value = l.total_linea * i.porcentaje / 100
               } into selected
    group selected by selected.id_iva into groups
    select groups.Sum(v => v.value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...