«Case case» в «группе по запросу» с Entity Framework 6

Я работаю с Entity Framework 6 и SQL Server 2014.

Мне нужно сделать группу по запросу. Это легко, но теперь мне нужен специальный случай. Вот пример, чтобы уточнить, что мне нужно.

Пример:

Table ID COLOR NAME 1 red1 aaa 2 red2 vvv 3 green1 fff 4 green2 ggg 5 yellow eee 

Предположим, что мне нужно группировать по COLOR, НО с привязкой : я хочу объединить значение red1 и red2 как красный и зеленый1, а green2зеленый .

Итак, если я сделаю запрос groupby & count , результат будет следующим:

  Output COLOR COUNT red 2 green 2 yellow 1 

Возможно ли это с Entity Framework? Как?

Это одна из моих групп. Могу ли я изменить его, чтобы достичь своей цели, или это что-то другое?

 var groupedData = MyData.GroupBy(x => x.Products.NAME).Select(g => new { Product = g.Key, Total = g.Sum(x => x.IMPORT), Quantity = g.Sum(x => x.QTY) } ) ; 

ОБНОВЛЕНИЕ -> ВТОРОЙ СЦЕНАРИЙ

Хорошо для предлагаемого решения.

Можно ли создать этот выход?

  Output COLOR COUNT red 2 green 2 yellow 1 allColor 5 

Итак, как вы можете видеть, я спрашиваю вас, как добавить строку в моем запросе с агрегатным вычислением во всех строках. Является ли это возможным?

Чтобы исправить его в инструкции LINQ, измените:

 GroupBy(x => x.Products.NAME). 

в

 GroupBy(x => { if (x.Products.NAME.StartsWith("green")) return "green"; if (x.Products.NAME.StartsWith("red")) return "red"; return x.Products.NAME; }). 

Ответ на вопрос об обновлении. Вы должны объединить одну строку в свою коллекцию с итогами. просто используйте CONCAT с новым массивом с одним элементом.

 var groupedData = MyData.GroupBy(x => { if(x.Products.NAME.StartsWith("green")) return "green"; if (x.Products.NAME.StartsWith("red")) return "red"; return x.Products.NAME; }) .Select(g => new { Product = g.Key, Cnt = g.Count()} ) .Concat(new[] { new { Product = "allColor", Cnt = MyData.Count() } }); 
  • Группирование SQL с нулевыми строками
  • Разница в наборах группировок
  • Группа T-SQL по задаче
  • SQL Server: группировать даты по диапазонам
  • TSQL: верхние записи данного раздела (условные)
  • Группа OHLC-Stockmarket Данные во множественные таймфреймы с T-SQL
  • T-SQL CROSS APPLY с GROUP BY
  • SQL Server 2014 - Ошибка в коде
  • SQL пересекается с группой по
  • Оператор SQL GROUP BY CASE с агрегатной функцией
  • Как получить первую 1 запись каждого группового заказа по описанию в SQL Server с помощью linq
  • Interesting Posts

    Расчет на основе пользовательской формулы, хранящейся в таблице db

    Индексы для внутренних соединений с предложением where

    SQL CLR trigger: имя контекстной БД

    Последовательная строка дат

    Какая польза от упаковки каждого вызова sql / stored proc в транзакции?

    Как написать хранимую процедуру?

    SQL отдельный набор данных для статистики – коллекция DataTable

    Можно ли передать стандартную строку соединения ado в Invoke-SqlCmd

    Обновить триггер, как удалить старую запись

    Как заставить базу данных SQL Server 2008 отключиться

    «Модель» считывает все строки из таблицы при инициализации? (представление)

    как добавить sqljdbc_auth.dll в мой проект maven

    Могу ли я использовать «если не существует» для вставки строки, если строка еще не присутствует в SQL-сервере?

    Как обойти ограничение UDF для операторов, работающих на стороне?

    Быстрый способ изменения хранимой процедуры MS SQL

    Давайте будем гением компьютера.