none
Sql a Linq to Sql RRS feed

  • Pregunta

  • ¡Hola amigos!

    Tengo la siguiente consulta sql y me gustaría convertirla a Linq To Sql.  Alguien que me ayuda, por favor, soy muy nuevo usando linq.  Esta es la consulta sql:

    DECLARE @true bit=1, @false bit=0

    SELECT
    CASE WHEN tra.ReglaId IS NULL THEN 
    @true
    ELSE
    @false
    END AS SELECTED, reg.Id, reg.Regla
    FROM
    TB_Regla reg
    LEFT JOIN TransPerfilRegla tra 
    ON reg.Id = tra.ReglaId AND tra.PerfilId = @PerfilId
    ORDER BY reg.Id

    De antemano, mil gracias!

    domingo, 18 de febrero de 2018 23:23

Respuestas

  • hola

    >>me gustaría convertirla a Linq To Sql.

    que es linq to sql ? eso ya esta deprecado, o es que te refieres a entity framework ?

    tienes un modelo de datos mapeado de objetos con las tablas ? porque no es solo armar el linq, alli veo que podenes logica

    var result = from reg in dbcontext.Reglas
                      join tra in dbcontext.TransPerfilRegla on reg.Id equals tra.ReglaId into g
                       from item in g.DefaultIfEmpty()
                      select new {
                            reg.Id,
                            reg.Regla,
                           selected = item == null ? true : false
                      };

    tambien podrias aprender como crear un left join en linq

    Realizar operaciones de combinación externa izquierda

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 19 de febrero de 2018 3:47

Todas las respuestas

  • hola

    >>me gustaría convertirla a Linq To Sql.

    que es linq to sql ? eso ya esta deprecado, o es que te refieres a entity framework ?

    tienes un modelo de datos mapeado de objetos con las tablas ? porque no es solo armar el linq, alli veo que podenes logica

    var result = from reg in dbcontext.Reglas
                      join tra in dbcontext.TransPerfilRegla on reg.Id equals tra.ReglaId into g
                       from item in g.DefaultIfEmpty()
                      select new {
                            reg.Id,
                            reg.Regla,
                           selected = item == null ? true : false
                      };

    tambien podrias aprender como crear un left join en linq

    Realizar operaciones de combinación externa izquierda

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 19 de febrero de 2018 3:47
  • ¡Buen día!

    Si, así es Leandro, estoy usando entity framework, solo que como estoy muy nuevo en el tema me he confundido un poco. Mil gracias por tu ayuda.

    Voy a revisar el enlace que me sugieres, ya que adicional a lo que pregunté tengo algunos procedimientos almacenados que no he podido utilizar en entity framework porque me da algunos errores.


    Neo2018

    lunes, 19 de febrero de 2018 17:07
  • hola

    >>me gustaría convertirla a Linq To Sql.

    que es linq to sql ? eso ya esta deprecado, o es que te refieres a entity framework ?

    tienes un modelo de datos mapeado de objetos con las tablas ? porque no es solo armar el linq, alli veo que podenes logica

    var result = from reg in dbcontext.Reglas
                      join tra in dbcontext.TransPerfilRegla on reg.Id equals tra.ReglaId into g
                       from item in g.DefaultIfEmpty()
                      select new {
                            reg.Id,
                            reg.Regla,
                           selected = item == null ? true : false
                      };

    tambien podrias aprender como crear un left join en linq

    Realizar operaciones de combinación externa izquierda

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    ¡Gracias por tu ayuda!

    Disculpa, en la consulta original valido tanto el id regla como el id perfil (ON reg.Id = tra.ReglaId AND tra.PerfilId = @PerfilId), pero veo que en tu consulta solo se valida la regla.  Cómo puedo realizar esa comparación?.  He investigado cómo hacerlo, pero la verdad no logro hacerlo.

    Mil gracias por tu ayuda


    Neo2018

    lunes, 19 de febrero de 2018 17:46