如何在包含相关实体的实体中应用过滤条件

时间:2017-02-17 00:49:25

标签: entity-framework-6

如何使用方法语法将此SQL查询转换为LinqToEntity语法?

SELECT  Recurso.IdRecurso, Recurso.Codigo, 
        Recurso.Titulo, Recurso.Descripcion
FROM    Recurso INNER JOIN
        RecursoUsuario ON Recurso.IdRecurso = RecursoUsuario.IdRecurso
WHERE   (RecursoUsuario.IdUsuario = 1)

我接下来测试,但错误在.Where(x => x.RecursoUsuario。 IdUsuario == idUsuario)

 public List<Recurso> RecursosPorUsuario(int idUsuario)
        {
            List<Recurso> ru = 
                bd.Recurso.Include("RecursoUsuario")
                .Where(x => x.RecursoUsuario.IdUsuario == idUsuario);

            return ru;
        }

请问你好吗?

1 个答案:

答案 0 :(得分:0)

免责声明:我是该项目的所有者Faster way to rank rows in subgroups in pandas dataframe.

EF + Query IncludeFilter功能允许过滤相关实体。

public List<Recurso> RecursosPorUsuario(int idUsuario)
{
    List<Recurso> ru = bd.Recurso
                         .IncludeFilter(x => x.RecursoUsuario
                                              .Where(x => x.RecursoUsuario.IdUsuario == idUsuario))
                         .ToList();

    return ru;
}

维基:Entity Framework Plus

解决方案#2

另一种技术是使用投影(这是我的图书馆在幕后做的)

public List<Recurso> RecursosPorUsuario(int idUsuario)
{
    List<Recurso> ru = bd.Recurso
                         .Select(x = new {
                            Recurso = x,
                            RecursoUsuarios = x.RecursoUsuario.
                                               .Where(x => x.RecursoUsuario.IdUsuario == idUsuario)
                         })
                         .ToList()
                         .Select(x => x.Recurso)
                         .ToList();

    return ru;
}