C# 实体框架核心使用ifs创建查询

C# 实体框架核心使用ifs创建查询,c#,.net-core,entity-framework-core,C#,.net Core,Entity Framework Core,大概是这样的: Itens = db.Transacao.AsNoTracking() if (x == 1) .Where(w => w.Confirmado == true) else .Where(w => w.Data.Date >= DateTime.Now.Date) .Include(i => i.Pesso

大概是这样的:

        Itens = db.Transacao.AsNoTracking()
            if (x == 1)
                .Where(w => w.Confirmado == true)
            else
                .Where(w => w.Data.Date >= DateTime.Now.Date)
            .Include(i => i.Pessoa)
            .Include(i => i.Categoria)
            .ToList();
IQueryable<[your entity here]> query = db.Transacao.AsNoTracking();
if (x == 1)
    query = query.Where(w => w.Confirmado == true);
else
    query = query.Where(w => w.Data.Date >= DateTime.Now.Date);

return query.Include(i => i.Pessoa)
            .Include(i => i.Categoria)
            .ToList();

我知道这不存在,但是,存在类似的东西吗?

好吧,你可以这样做:

        Itens = db.Transacao.AsNoTracking()
            if (x == 1)
                .Where(w => w.Confirmado == true)
            else
                .Where(w => w.Data.Date >= DateTime.Now.Date)
            .Include(i => i.Pessoa)
            .Include(i => i.Categoria)
            .ToList();
IQueryable<[your entity here]> query = db.Transacao.AsNoTracking();
if (x == 1)
    query = query.Where(w => w.Confirmado == true);
else
    query = query.Where(w => w.Data.Date >= DateTime.Now.Date);

return query.Include(i => i.Pessoa)
            .Include(i => i.Categoria)
            .ToList();
IQueryable query=db.Transacao.AsNoTracking();
如果(x==1)
query=query.Where(w=>w.Confirmado==true);
其他的
query=query.Where(w=>w.Data.Date>=DateTime.Now.Date);
return query.Include(i=>i.Pessoa)
.包括(i=>i.Categoria)
.ToList();

希望能有所帮助。

好吧,你可以这样做:

        Itens = db.Transacao.AsNoTracking()
            if (x == 1)
                .Where(w => w.Confirmado == true)
            else
                .Where(w => w.Data.Date >= DateTime.Now.Date)
            .Include(i => i.Pessoa)
            .Include(i => i.Categoria)
            .ToList();
IQueryable<[your entity here]> query = db.Transacao.AsNoTracking();
if (x == 1)
    query = query.Where(w => w.Confirmado == true);
else
    query = query.Where(w => w.Data.Date >= DateTime.Now.Date);

return query.Include(i => i.Pessoa)
            .Include(i => i.Categoria)
            .ToList();
IQueryable query=db.Transacao.AsNoTracking();
如果(x==1)
query=query.Where(w=>w.Confirmado==true);
其他的
query=query.Where(w=>w.Data.Date>=DateTime.Now.Date);
return query.Include(i=>i.Pessoa)
.包括(i=>i.Categoria)
.ToList();

希望能有所帮助。

当它是一个记录很少的表时,我使用这个。但是当表中有很多记录时,我们就会遇到问题<代码>IQueryable query=db.Transacao.AsNoTracking()这里我们得到所有的记录,只有在我们过滤它们之后。如果我们可以首先创建查询,并且只在最后应用查询。在调用.ToList()方法之前,查询不会执行,因此在AsNoTracking()行上没有任何记录,您只是在构建查询。检查此链接是否正确。你是对的。我很困惑,因为在调试器中,如果你观察变量,那么记录就会出现,但这仅仅是因为我观察了。。这个解决方案将解决我的问题。谢谢当它是一个记录很少的表时,我使用这个。但是当表中有很多记录时,我们就会遇到问题<代码>IQueryable query=db.Transacao.AsNoTracking()这里我们得到所有的记录,只有在我们过滤它们之后。如果我们可以首先创建查询,并且只在最后应用查询。在调用.ToList()方法之前,查询不会执行,因此在AsNoTracking()行上没有任何记录,您只是在构建查询。检查此链接是否正确。你是对的。我很困惑,因为在调试器中,如果你观察变量,那么记录就会出现,但这仅仅是因为我观察了。。这个解决方案将解决我的问题。谢谢你