Как использовать LINQ для получения дочерней коллекции - PullRequest
0 голосов
/ 02 июня 2009

Начиная здесь:

public class Customer
{
  public int CustomerID { get; set; }
  public string CustomerName { get; set; }  
  public IList<Order> Orders { get; set; }
}

public class Order
{
  public int OrderID { get; set; }
  public int CustomerID { get; set; }
}

Каким будет запрос linq, который вы пишете для получения всех заказов от всех клиентов?

Что-то с эффектом:

IList<Order> orders = new List<Order>();
foreach (Customer c in Customers)
{
    orders.Union(c.Orders);
}

Я попробовал следующее, но он выдает исключение "коллекция nhibernate не была ассоциацией":

var orders = from c in Customers
             select c.Orders;

Я знаю, что что-то упустил, но я не могу найти способ добиться этого в linq.

Ответы [ 2 ]

2 голосов
/ 02 июня 2009
var orders = from c in db.Customers
    from o in c.Orders
    select o;

Или

var orders = db.Customers.SelectMany(c => c.Orders);

Будет ли это работать в linq для nhibernate? Я не знаю.

0 голосов
/ 02 июня 2009

Убедитесь, что ограничение внешнего ключа правильно настроено из [Заказ]. [CustomerID] в [Customer]. [ID] в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...