Я использую ядро Entity Framework. У меня есть следующие объекты:
public class Category {
public long Id { get; set; }
public string Name { get; set; }
}
public class Product {
public long Id { get; set; }
public long CategoryId { get; set; }
public string Name { get; set; }
}
Я хотел бы получить группировку, в которой мой ключ - это моя Категория, а у меня есть список продуктов. Я хотел бы сделать это, выполнив один запрос к базе данных.
var data = context.Categories
.Join(
Products,
c => c.Id,
p => p.CategoryId,
(c, p) => new {
Category = c,
Product = p
}
)
.ToList();
Это запускает запрос, который я хочу, и, кажется, создает список с анонимным объектом, который имеет категорию и продукт. Если я сделаю следующее, он сделает то, что я хочу:
var grouped = data.GroupBy(x => new { x.Category });
Ключ в порядке, но список значений, похоже, повторяет Категории. Есть ли способ сделать так, чтобы у меня был ключ, являющийся категорией, а затем значения - это список объектов продукта? Я бы предпочел синтаксис метода, но на этом этапе я, надеюсь, смогу выяснить синтаксис запроса, если это то, что мне кто-то может достать.