Как объединить таблицы и сгруппировать результаты с помощью LINQ?C#

Место общения программистов C#
Anonymous
Как объединить таблицы и сгруппировать результаты с помощью LINQ?

Сообщение Anonymous »

У меня есть таблица продуктов и таблица Product_Images с отношением один ко многим (один продукт может иметь несколько изображений), и я пытаюсь получить все продукты с соответствующими изображениями. На данный момент у меня есть:

Код: Выделить всё

 var results = (from p in _context.Products
join i in _context.Product_Images on p.Id equals i.Product.Id
select new
{
p,
i
}).ToList();
Однако это возвращает отдельные результаты для каждого изображения, даже если они относятся к одному и тому же товару:

Код: Выделить всё

{product1, product1Img1}
{product1, product1Img2}
{product1, product1Img3}
Мне нужно, чтобы результаты содержали товар и список всех связанных с ним изображений, например:

Код: Выделить всё

{product1, [product1Img1, product1Img2, product1Img3]}
{product2, [product2Img1, product2Img2, product2Img3]}
{product3, [product3Img1, product3Img2, product3Img3]}
Я пробовал использовать группировать по для изображений после объединения таблиц, но получал либо сообщение «Метод 'GroupBy' не поддерживается».
strong>" или "За операцией GroupJoin должна следовать операция SelectMany, где селектор коллекции вызывает исключение метода DefaultIfEmpty.
", и я могу только предполагать, что мой синтаксис неверен. .

Подробнее здесь: https://stackoverflow.com/questions/787 ... using-linq

Вернуться в «C#»