У меня есть эта таблица: Статистика (id int, col1 int, col2 int, col3 int ...) Я хочу получить сумму значений col1, значений col2, col3 ценности и т.д. простой SQL-запрос:Сумма нескольких столбцов в запросе LINQ
SELECT SUM([Col1]), SUM([Col2])
FROM [dbo].[Statistics]
но в LINQ:
var val1 = db.Statistics.Sum(x => x.Col1);
var val2 = db.Statistics.Sum(x => x.Col2);
var val3 = db.Statistics.Sum(x => x.Col3);
...
Таким образом, работает, но это выполняет N запросов в базе данных. Я бы хотел выполнить только один. Единственным способом, который я нашел, является следующее:
var result = db.Statistics.GroupBy(x => 1).Select(x => new
{
val1 = x.Sum(k => k.Col1),
val2 = x.Sum(k => k.Col2),
val3 = x.Sum(k => k.Col3),
});
что он генерирует сложный запрос. Это нормально?
UPDATE эти планы 2 исполнения:
Мы не можем сказать вам, достаточно ли он для вас. Вы говорите нам. ** Измерьте это **. Если он работает достаточно хорошо для вас, то он достаточно хорошо подходит для вас. Если это не так, вы знаете, что нет. – Servy
Возможный [дубликат] (http://stackoverflow.com/questions/2432281/get-sum-of-two-columns-in-one-linq-query) –