как выполняется запрос SQL в выражении linq или lambda? - PullRequest
0 голосов
/ 03 апреля 2012

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

SELECT  T2.ID, SUM(T1.Importe) AS Importe, T3.ID, T3.Column_1,
        T3.Column_2, T1.Column_3
FROM    Tabla_1 T1
INNER JOIN Tabla_2 T2 on T1.ID = T2.ID
INNER JOIN Tabla_3 T3 on T2.ID = T3.ID
WHERE   T1.ID in (LIST)
GROUP BY T2.ID, T3.ID, T3.Column_1, Column_2, T1.Column_3

, где LIST - это список (12,15,18,19, ...)

как в выражении linq или lamnbda?

thks!

Ответы [ 2 ]

3 голосов
/ 03 апреля 2012

Вот подсказка:

var result = ents.T1
    .Where(x => list.Contains(x.Id))
    .GroupBy(x => new 
                 { 
                    Id2 = x.T2.Id, 
                    Id3 = x.T3.Id,
                    ...
                    // etc group fields 
                 })
    .Select(x => new
                 { 
                    Importe = x.Sum(i => i.Importe)
                    x.Key.Id2,
                    // other group fields
                    ...
                 })
    .ToArray();

Я настоятельно рекомендую не называть столбцы и таблицы так, как вы.Действительно)

1 голос
/ 03 апреля 2012

Я не пробовал, но это может выглядеть так:

var result = (from t1 in dataContext.tabla_1
              join t2 in dataContext.tabla_2 on t1.ID equals t2.ID
              join t2 in dataContext.tabla_2 on t2.ID equals t3.ID
              group t2 by t2.ID into g
              where listIds.contains(t1.ID)
              select new {g.ID, g.Sum(t => t.Importe), ...});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...