gpt4 book ai didi

c# - 如何在循环中链接多个 DbSet.Include()?

转载 作者:太空宇宙 更新时间:2023-11-03 21:14:42 25 4
gpt4 key购买 nike

如何包含在循环中?我想指定要包含在查询中的相关对象。

我有下一个功能

    public IQueryable<TEntity> Include(Expression<Func<TEntity, object>>[] includes)
{
IQueryable<TEntity> result = null;

//two includes are ok:
//IQueryable<TEntity> result2 = null;
//if (includes.Count() > 1)
//{
//result2 = dbset.Include(includes[0]).Include(includes[1]);
//}

//include in loop is not ok:
foreach (var exp in includes)
{
result = dbset.Include(exp);
}
return result;
}

如果我取消注释 result2 的注释代码就可以了。但结果并不好。

奇怪的是,如果我一步一步地调试循环,在每次迭代检查结果时结果都是好的。但是,如果我不逐步检查结果,则包括仅针对最后一次表达的工作。

您是否知道为什么这不起作用以及如何解决?


编辑:这是修复:

    result = dbset;
foreach (var exp in includes)
{
result = result.Include(exp);
}

最佳答案

问题是您不断用 dbSet 上的单个 Include() 调用的结果覆盖 result 的值。

您需要按如下方式连接这些调用:

foreach (var exp in includes)
{
result = result.Include(exp);
}

关于c# - 如何在循环中链接多个 DbSet.Include()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35218502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com