Задать вопрос
@andrey71
админю и учу C#, ASP.NET Core

.NET Core Web Api EF Как сделать группировку значений в запросе?

Добрый всем день!

Подскажите пожалуйста, я не так давно начал изучать asp.net core + EF подтянулся... не всё ещё понимаю, я пытаюсь сделать выборку из БД с группировкой результата. Мне необходимо выбрать все строки с определённым кодом и сгруппировать их по названию товара (Nomenklatura).

Модель такая:
public class Orders
    {
        public int Id { get; set; }
        public int Kod { get; set; }
        public string Nomenklatura { get; set; }
        public int Kolich { get; set; }
}

Вот метод, который ругается на меня, что я List привожу к IEnumerable
[HttpGet]
        public IEnumerable<Orders> Get([FromQuery(Name = "kod")]int kod)
        {
            var orders = db.Orders
                .Where(x => x.Kod == kod)
                .GroupBy(x => x.Nomenklatura).ToList();
           
            return orders;
        }


Вроде Where возвращает IEnumerable...

Буду рад любому совету!
Заранее спасибо!
  • Вопрос задан
  • 218 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
@andrey71 Автор вопроса
админю и учу C#, ASP.NET Core
Вот код, который мне подсказали, который даёт необходимый результат:
GET localhost:65171/api/orders/966

[
    "Перчатки",
    "Варежки"
]


public IEnumerable<string> GetNomenklatura(int kod)
        {
            var orders = db.Orders
                .Where(x => x.Kod == kod)
                .GroupBy(x => x.Nomenklatura)
                .Select(x => x.Key)
                .ToList();
            return orders;
        }


Большое спасибо, всем кто помогал мне в поиске решения!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@kttotto
пофиг на чем писать
GroupBy по сути Вам вернет массив массивов, к List привести Вы его не сможете, можете привести к Dictionary, например
var orders = db.Orders
                .Where(x => x.Kod == kod)
                .GroupBy(x => x.Nomenklatura)
                .ToDictionary(x => x.FirstOrDefault().Nomenklatura, x => x.ToList() )

тогда получить сгруппированное можно по ключу
orders["anyNomenklatura"]
и там будет список
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы