Эквивалент данного кода PostgreSQL в C# Linq

Есть данный запрос на PostgreSQL:

SELECT t.flight_id, COUNT(*) AS c, COALESCE(SUM(t.amount), 0) AS coal
FROM ticket_flights AS t
GROUP BY t.flight_id
HAVING COUNT(*) > 5

Не могу понять как его написать в C#. Вот, что у меня вышло:

var x = from tf in db.Ticket_Flights
    group tf by tf.Flight_Id into g
    where g.Count() > 5 
    select new { g.Key, Count = g.Count(), Sum = g ?? 0.0};

Вроде первые 3 строки переписаны правильно, но вот с select-ом проблемы.


Ответы (1 шт):

Автор решения: Alex Krass

Ваша группировка содержит элементы, вам нужно посчитать их сумму по нужному полю amount.

var x = from tf in db.Ticket_Flights
    group tf by tf.Flight_Id into g
    where g.Count() > 5 
    select new { g.Key, Count = g.Count(), Sum = g.Sum(x => x.amount) ?? 0.0};
→ Ссылка