2

我有一个表 TableA 和子表 TableB。我想获取所有父表记录,但选择满足条件的子记录。我正在使用包含来获取子记录。

除了使用select new之外,还有什么直接的方法吗?

4

2 回答 2

2

LINQ to SQL 有一个 LoadOptions,您可以在上下文中设置它来做一些强大的事情。大多数人指向 .LoadWith ,它急切地加载子记录。还有一个 AssociateWith 指定应用于惰性子提取的过滤。它们都可以采用 lambda 表达式进行子子过滤。这是一个例子:

var lo = new DataLoadOptions();
lo.AssociateWith<Customers>
    (c => c.Orders.Where(o => !o.ShippedDate.HasValue));
this.LoadOptions=lo;

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

请注意,这只适用于 LINQ to SQL。EF 目前不支持这种行为。

于 2013-07-12T20:06:15.530 回答
0
using (var context = new DbEntities()) {
    foreach (var p in context.Parents) {
        var childQuery = from c in p.Children 
                         where c.whatever == something 
                         select c;
        // Do something with the items in childQuery, like add them to a List<Child>,
        // or maybe a Dictionary<Parent,List<Child>>
    }
}
于 2013-07-12T15:59:29.363 回答