Помогите с LINQ Projection - PullRequest
       38

Помогите с LINQ Projection

1 голос
/ 13 апреля 2011

У меня есть ICollection<Product>:

var products = productRepository.FindAll();

Product имеет свойство под названием Orders, которое является ICollection<Order>.

Я пытаюсь получить ICollection<Order> для данного CustomerId .

Другими словами:

Учитывая набор продуктов, я хочу получить список заказов для конкретного клиента

Вот что у меня есть:

var orders = products
               .Where(x => x.Orders != null)
               .Where(x => x.Orders.Any(y => y.CustomerId == 10))
               .Select(x => x.Orders)
               .ToList();

Но я получаю List<ICollection<Order>>, где я хочу ICollection<Order>.

Должен ли я сделать какую-то группировку?

Ответы [ 2 ]

5 голосов
/ 13 апреля 2011

А как же:

var orders = products
           .Where(x => x.Orders != null)
           .Where(x => x.Orders.Any(y => y.CustomerId == 10))
           .SelectMany(x => x.Orders)
           .ToList();
0 голосов
/ 13 апреля 2011

Если вы хотите собирать заказы на один продукт, это сработает

var orders = products
               .Where(x => x.Orders != null)
               .Where(x => x.Orders.Any(y => y.CustomerId == 10))
               .Select(x => x.Orders)
               .Single();
...