首页 > 解决方案 > 使用 EF Core 从多到多获取某些列

问题描述

在多对多关系中,我只想从参考表中获取某些列,例如 Id 和 Name 来填充选择列表。问题是我在使用 Linq 之前没有这样做,而且我不明白执行此过程的最佳方法是什么。

这是我的模型。

public class Celula
{
    public int Id { get; set; }
    public string Nome { get; set; }
    public string UAP { get; set; }
    public ICollection<MatrizCelulaReferencia> Matrizes { get; set; }
}

public class Referencia
{
    public int Id { get; set; }
    public string Nome { get; set; }
    public bool IsActivo { get; set; }
    public ICollection<MatrizCelulaReferencia> Matrizes { get; set; }
}

public class MatrizCelulaReferencia
{
    public int Id { get; set; }

    public int CelulaId { get; set; }
    public Celula Celula { get; set; }


    public int ReferenciaId { get; set; }
    public Referencia Referencia { get; set; }

    public int ObjectivoHora { get; set; }
    public int UAPId { get; set; }
    public UAP UAP { get; set; }

    public string Tipo { get; set; }
}

这是我当前的查询

   var query = await _context.Referencias
                .Include(r => r.Matrizes)
                .ThenInclude(r => r.Celula)
                .Where(r => r.Matrizes.Any(c => c.CelulaId == Operador.Celula))
                .Select(x => new Referencia
                {
                    Id = // Referencia Id
                    Nome = // Referencia Name
                })
                .ToListAsync();

现在有点乱,因为我不知道如何在此查询中从参考表中选择某些列。我只需要 Id 和 Name

标签: c#asp.net-core-2.2entity-framework-core-2.2

解决方案


x您传递给 lambda的参数是一个Referencia实例,因此您只需执行以下操作:

.Select(x => new Referencia
{
    Id = x.Id
    Nome = x.Nome
});

推荐阅读