LINQ - 包含子属性的子属性

时间:2010-08-19 12:41:07

标签: c# .net linq

我的实体中有子属性的子属性。我有一个Get方法:

List<T> Find(Expression<Func<T, bool>> where, 
             params Expression<Func<T, object>>[] toInclude);

我通常只加载第一个子属性的方法是这样做:

myManager.Find(x => x.Id == id, x.ChildB);

但是,我希望能够撤回ChildB属性,这是我的ChildB属性的子代。

无论如何使用我提供的方法签名执行此操作?我通常知道我可以做一个.Include(“ChildB.ChildC”)。

编辑:为每个请求添加代码

using(MyContext context = new MyContext())
{
    ObjectQuery<T> objectQuery = (ObjectQuery<T>)context.CreateObjectSet<T>();
    foreach(var include in toInclude)
    {
        objectQuery = objectQuery.Include(include);
    }

    return objectQuery.Where<T>(where);
}

1 个答案:

答案 0 :(得分:0)

如果您正在讨论LINQ-to-SQL,那么您可以在对其执行任何查询之前配置DataContext。

类似的东西:

var options = new DataLoadOptions();
options.LoadWith<ChildB>(b => b.ChildC);
dataContext.LoadOptions = options;