Esto suena fácil, pero me gustaría convertir el siguiente sql a linq.

  Select C.CompanyId, C.CompanyName, CompanyNumber, IsNull(UC.IsActive, 0) as IsActive
  From Company as C
  Left Join UserCompany UC on UC.CompanyId = C.CompanyId and UC.UserId = '2E34B10C-1BDB-4EF9-ADDF-4C5F949C19B1'  
  Order by C.CompanyNumber
-1
Monzingo 13 dic. 2016 a las 20:25
¿Tiene entidades respectivas para Company y UserCompany?
 – 
Viki888
13 dic. 2016 a las 20:26
Si, tengo ambos en mi modelo
 – 
Monzingo
13 dic. 2016 a las 20:27
Por favor, proporcione también esos detalles.
 – 
Viki888
13 dic. 2016 a las 20:29
Todo lo que realmente se necesita saber es que Company tiene CompanyId y UserCompany tiene UserId, CompanyId. CompanyId es una clave externa en UserCompany.
 – 
Monzingo
13 dic. 2016 a las 20:32
1
Luego ayúdenos a visualizar eso mostrando el código que representa esa relación para proporcionar un ejemplo mínimo reproducible.
 – 
krillgar
13 dic. 2016 a las 20:56

1 respuesta

La mejor respuesta

¿Qué pasa con algo como esto? Obviamente, deberá agregar el contexto de su entidad frente a mis Listas.

        var results = (
            from c in new List<Company>()
            join uc in (
                from x in new List<UserCompany>()
                where x.UserId == "2E34B10C-1BDB-4EF9-ADDF-4C5F949C19B1"
                select x
            ) on c.CompanyId equals uc.CompanyId into gj
            from uc in gj.DefaultIfEmpty()
            select new
            {
                c.CompanyId,
                c.CompanyName,
                c.CompanyNumber,
                uc.IsActive
            }
        ).ToList();
1
BrentHS 13 dic. 2016 a las 22:03