Список групп внутри списка с использованием LINQ

#c# #linq

#c# #linq

Вопрос:

У меня есть два класса:

 class Customer
{
    public string Name { get; set; }
    public string ZipCode { get; set; }
    public List<Order> OrderList { get; set; }
}

class Order
{
    public string OrderNumber { get; set; }
}
  

Используя LINQ, я хочу получить список групп заказов по почтовому индексу. Если почтовый индекс «12121» имеет 10 клиентов, и у каждого по 2 заказа, то он должен вернуть мне только один почтовый индекс со списком из 20 заказов.

Я пытаюсь сделать это следующим образом, но не могу понять, что не так

 var orders = br.CustOrderList
.Select(r => new
{
    r.ZipCode,
    r.Name,
    r.OrderList
})
.GroupBy(x => new { x.ZipCode, x.OrderList}); 
  

Пожалуйста, любая помощь?

Комментарии:

1. Не могли бы вы, пожалуйста, предоставить. Как вы хотите вводить и ожидаемый результат

Ответ №1:

Это должно делать то, что вы хотите:

 var orders = br.CustOrderList
    .GroupBy(x => x.ZipCode)
    .Select(g => new
    {
        ZipCode = g.Key,
        Orders = g.SelectMany(x => x.OrderList)
    });
  

Ответ №2:

 var orders = br.CustOrderList
.Select(r => new
{
    r.ZipCode,
    r.Name,
    r.OrderList
})
.GroupBy(x => x.ZipCode); 
  

Вы просто хотите сгруппировать по почтовому индексу, поэтому просто сгруппируйте по этому

Ах да, просто попробуй

 var order = br.CustOrderList
              .GroupBy(x = x.ZipCode);
  

Нет необходимости выбирать новые элементы из списка

Комментарии:

1. это просто возвращает почтовый индекс. Мне также нужен список заказов для этого почтового индекса