#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. это просто возвращает почтовый индекс. Мне также нужен список заказов для этого почтового индекса