如何使用LINQ检索子集合

时间:2009-06-01 20:54:42

标签: linq nhibernate collections

从这里开始:

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 个答案:

答案 0 :(得分:2)

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

或者

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

它是否适用于linq for nhibernate?我不知道。

答案 1 :(得分:0)

确保从[订单]。[客户ID]到数据库中的[客户]。[ID]正确设置外键约束。