【问题标题】:How to get a list of records based on an informed enumerated list in a 1 to many relationship - EF Core如何根据一对多关系中的知情枚举列表获取记录列表 - EF Core
【发布时间】:2021-12-07 15:21:35
【问题描述】:

我需要传递一个枚举列表,根据下面描述的sql,只获取与枚举列表中的“应用程序”字段等效的记录:

select * from "FormaContato" as "fc"
inner join "FormaContatoAplicacao" as "fca" ON "fc"."Id" = "fca"."FormaContatoId"
where "fca"."AplicacaoId" in (2, 1, ...)

public enum AplicacaoEnum
{
    [Description("PESSOA FÍSICA")]
    Nenhum = 1,
    [Description("PESSOA JURÍDICA")]
    ContatoTelefonico = 2
}

public IQueryable<FormaContato> GetAllByAplicacao(List<AplicacaoEnum> aplicacaoList = null)
{
    var data = DbSet.
        Include(x => x.FormaContatoAplicacoes)
        .Where(x=> x.FormaContatoAplicacoes.Aplicacao == aplicacaoList ????????? Here.)
        .AsNoTracking();

    return data;
        
}

如何做到这一点? 谢谢! :)

【问题讨论】:

标签: c# entity-framework entity-framework-core


【解决方案1】:

您似乎正在寻找.Contains() 方法。

所以在你的情况下,它会是这样的:

var data = DbSet
     .Include(x => x.FormaContatoAplicacoes)
     .Where(x=> aplicacaoList.Contains(x.FormaContatoAplicacoes.Aplicacao))
     .AsNoTracking();

另外请注意,如果您以后不打算在流程中使用FormaContatoAplicacoes,我认为没有理由在这里使用.Include()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    • 2010-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多