0

我需要在实体框架中进行查询,但无法正常工作。我正在使用连接、左字体和或条件。我试图这样做,但它不起作用。当我在 Sqlserver 中运行查询时,它返回 2 行,但通过实体框架返回 0 行

The query is :
SELECT *
FROM   DATABASE..PENDS P
       INNER JOIN DATABASE..VIEWERS V
               ON P.TIPO = V.TIPO
       LEFT JOIN DATABASE..GROUP G
              ON V.GRUPO = G.ID
       INNER JOIN DATABASE..AUTH A
               ON (A.AUT_LOGIN = V.USUARIO OR A.GRUPO = G.ID)
WHERE  A.AUT_LOGIN = 'userlogin' 

I tryed to do this way:

var pendsc = (from p in _context.Pends
                              join v in _context.Viewers on new
                              {

                                  p.Tipo
                              }
                              equals new
                              {
                                        v.Tipo
                              }
                              join g in _context.Group on new
                              {
                                               Grupo = v.Grupo
                              }
                              equals new
                              {

                                  Grupo = g.Id

                              }
                              from a in _context.Auth
                              where (a.Login == v.Usuario || a.Grupo == g.Id)
                              where a.Login == "userlogin"
                              select p).ToList();
4

1 回答 1

0

对于左连接,您应该使用带有 DefaultIfEmpty 的 into 子句

var pendsc = (from p in _context.Pends
                              join v in _context.Viewers on
                             p.Tipo equals v.Tipo

                              join g in _context.Group on v.Grupo
                                                            equals g.Id into TippoGroup

                              from Obj in TippoGroup.DefaultIfEmpty()
                              join
                              a in _context.Auth
                              where (a.Login == v.Usuario || a.Grupo == g.Id)
                              where a.Login == "userlogin"
                              select p).ToList();
于 2013-10-17T12:26:10.543 回答