2017-02-17 69 views
0

如何将此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) 

我考下一个,但在。凡(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; 
     } 

莫非你盔请错误?

回答

0

免责声明:我是这个项目的所有者Entity Framework Plus

EF +查询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; 
} 

百科:EF+ Query IncludeFilter

解决方案#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; 
} 
相关问题