C# LINQ-包含子属性的子属性
我的实体中有子属性的子属性。我有一个Get方法:C# LINQ-包含子属性的子属性,c#,.net,linq,C#,.net,Linq,我的实体中有子属性的子属性。我有一个Get方法: List<T> Find(Expression<Func<T, bool>> where, params Expression<Func<T, object>>[] toInclude); 但是,我希望能够收回ChildC财产,它是我的ChildB财产的一个子财产 是否仍然可以使用我提供的方法签名执行此操作?我知道通常我可以做a.Include(“Child
List<T> Find(Expression<Func<T, bool>> where,
params Expression<Func<T, object>>[] toInclude);
但是,我希望能够收回ChildC财产,它是我的ChildB财产的一个子财产
是否仍然可以使用我提供的方法签名执行此操作?我知道通常我可以做a.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);
}
使用(MyContext context=new MyContext())
{
ObjectQuery ObjectQuery=(ObjectQuery)context.CreateObjectSet();
foreach(包括在toInclude中的var)
{
objectQuery=objectQuery.Include(Include);
}
返回objectQuery.Where(Where);
}
如果您谈论的是LINQ to SQL,那么您应该在对其执行任何查询之前配置DataContext
比如:
var options = new DataLoadOptions();
options.LoadWith<ChildB>(b => b.ChildC);
dataContext.LoadOptions = options;
var options=new DataLoadOptions();
options.LoadWith(b=>b.ChildC);
dataContext.LoadOptions=选项;
我正在对实体执行LINQ,但是,我希望开发人员能够传递他们想要包含的导航属性列表,而不必处理Context.brandon-您是否有可能还包括list Find()方法存根的实现??考虑到这一点,我相信我可以在这个问题上做一个像样的尝试。谢谢…好的,我会看一下,看看我是否能“增值”…布兰登-恐怕我找不到一个方法来满足你的要求。真的很难。可能是下载EF源(如果可用)或在reflector下运行它,看看当您尝试包含childb.childc场景时会发生什么(我相信您已经遇到了这种情况,但只是以防万一)。再一次很抱歉在这一次出现“软生菜”,这似乎是一个直截了当的挑战。。
var options = new DataLoadOptions();
options.LoadWith<ChildB>(b => b.ChildC);
dataContext.LoadOptions = options;