C# 如何在通用存储库中添加linq中的where-in-include属性?

C# 如何在通用存储库中添加linq中的where-in-include属性?,c#,linq,entity-framework-core,C#,Linq,Entity Framework Core,如何在通用存储库中添加linq中的where-in-include属性 public T GetFirstOrDefault(Expression<Func<T, bool>> filter = null, params Expression<Func<T, object>>[] includes) { IQueryable<T> query = dbSet; if (filter != null

如何在通用存储库中添加linq中的where-in-include属性

public T GetFirstOrDefault(Expression<Func<T, bool>> filter = null, params Expression<Func<T, object>>[] includes)
    {
        IQueryable<T> query = dbSet;
        if (filter != null)
        {
            query = query.Where(filter);
        }
        if (includes != null)
        {
            foreach (Expression<Func<T, object>> include in includes)
            {
                query = query.Include(include).Where("How to do");
            }
            //query = includes.Aggregate(query, (current, include) => current.Include(include));
        }

        return query.FirstOrDefault();
    }
public T GetFirstOrDefault(表达式过滤器=null,参数表达式[]包含)
{
IQueryable query=dbSet;
if(过滤器!=null)
{
query=query.Where(过滤器);
}
如果(包括!=null)
{
foreach(表达式include in includes)
{
query=query.Include(Include).Where(“如何做”);
}
//query=includes.Aggregate(query,(current,include)=>current.include(include));
}
返回query.FirstOrDefault();
}
var query=context.Set().AsQueryable();
foreach(context.Model.FindEntityType(typeof(T)).GetNavigations()中的var属性)
query=query.Include(property.Name);
返回查询;
在桌子上

显示结果数据。表A包含所有子表B和子表C数据

在控制器或视图中筛选子类


为什么使用通用回购是一个错误?因为您正在创建另一个抽象;更多的工作;未来松鼠式地设计一个架构问题,几乎没有任何收获(不管互联网、youtube或你的导师告诉你什么)。EF已经是一个通用存储库,ORMSB有更合适的模式,但我现在如何解决这个问题?@00110001不,我在自己的项目中使用通用存储库,而我的首席开发人员在他的项目中没有使用通用存储库。我把他的计划和我的比较。他的密码太多了。大约是我工作的10-20倍。他做了许多客户非常满意的项目。我的网络性能甚至比他的还要快。所以我不同意你说的。我仍然更喜欢使用通用存储库,因为它可以节省我很多时间。我已经添加了代码。在include之后,我想添加clauseIt不起作用的地方:(它在我的旧项目中起作用。您使用的是什么net core版本?您使用的是efcore吗?我使用的是efcore。我的问题是我想在include之后添加一个where子句。就像它应该是query.include(属性)一样.where(条件);要为父类或子类执行where子句吗?我要为子类执行where子句
var query = context.Set<T>().AsQueryable();
foreach (var property in context.Model.FindEntityType(typeof(T)).GetNavigations())
    query = query.Include(property.Name);

return query;