Я хотел бы выполнить оператор Linq to Sql, который фиксирует количество и среднее в (отфильтрованном) наборе данных. То, что у меня работает, но требует двух запросов к базе данных, когда это должно быть возможно в одном запросе.
Интересно, что я могу получить один запрос при использовании предложения group by.
Например:
select count(*), avg(duration) from events
Мой linq выглядит так:
var x = from e in db.events
select e;
x = from i in x
where i.NAME == "foo"
select i;
return new {
count = x.Count(),
avgDuration = x.Average(e => e.Duration)
};
С этим кодом я получаю два запроса:
SELECT AVG([t0].[DURATION]) AS [value] FROM [dbo].[EVENTS] AS [t0]
и
SELECT COUNT(*) AS [value] FROM [dbo].[EVENTS] AS [t0]
Есть ли другой способ?