Intereting Posts
SQL Server: репликация спецификации снизу вверх Цикл SQL для каждого столбца таблицы Объединение SELECT DISTINCT с UNION DISTINCT в MySQL – любой эффект? Добавление внутреннего соединения и предложение where в INSERT INTO ON DUPLICATE KEY UPDATE mySQL Trigger работает после вставки консоли, но не после вставки скрипта сумма двух полей в двух таблицах Как подсчитать пустые таблицы в базе данных? Присоединиться к 1 = 1 против креста Fluent NHibernate: как создать кластеризованный индекс в таблице со многими для многих? Как использовать RETURNING с ON CONFLICT в PostgreSQL? В чем разница с использованием «И» и «Между» в предложении where? совокупное значение в разных строках SQL – нужен запрос, чтобы получить самое последнее сообщение в каждом потоке, в котором пользователь является частью Получение изображения из базы данных sql Возможно ли получить доступ к старой версии строки в Postgres, которая не была очищена от вакуумирования?

SQL-Entity Framework Count Group-By

Мне нужно перевести эту инструкцию SQL в запрос Linq-Entity

 SELECT name, count(name) FROM people GROUP by name 

    Синтаксис запроса

     var query = from p in context.People group p by p.name into g select new { name = g.Key, count = g.Count() }; 

    Синтаксис метода

     var query = context.People .GroupBy(p => p.name) .Select(g => new { name = g.Key, count = g.Count() }); 

    ВАЖНО: Entity Framework 7 (теперь переименованный в Entity Framework Core 1.0 ) еще не поддерживает GroupBy() для перевода в GROUP BY в сгенерированном SQL (даже в финальной версии 1.0 он не будет). Любая логика группировки будет выполняться на стороне клиента, что может привести к загрузке большого количества данных.

    В конце концов код, написанный таким образом, автоматически начнет использовать GROUP BY, но на данный момент вам нужно быть очень осторожным, если загрузка всего негруппированного набора данных в память вызовет проблемы с производительностью.

    Для сценариев, где это разрыватель транзакций, вам придется писать SQL вручную и выполнять его через EF.

    Если вы сомневаетесь, запустите Sql Profiler и посмотрите, что сгенерировано – что вы, вероятно, должны делать в любом случае.

    https://blogs.msdn.microsoft.com/dotnet/2016/05/16/announcing-entity-framework-core-rc2

    Полезным расширением является сбор результатов в Dictionary для быстрого поиска (например, в цикле):

     var resultDict = _dbContext.Projects .Where(p => p.Status == ProjectStatus.Active) .GroupBy(f => f.Country) .Select(g => new { country = g.Key, count = g.Count() }) .ToDictionary(k => k.country, i => i.count); 

    Первоначально найденный здесь: http://www.snippetsource.net/Snippet/140/groupby-and-count-with-ef-in-c