Saltar al contenido

Error en LINQ Left JOIN

Agradecemos tu apoyo para extender nuestros escritos en referencia a las ciencias informáticas.

Solución:

cp.DefaultIfEmpty() devuelve una secuencia que tendrá un único null valor en si cp estaba vacio.

Eso significa que usted tiene que tener en cuenta el hecho de que el p en

from p in cp.DefaultIfEmpty()

quizás null. Ahora, realmente no has dicho lo que quieres que suceda en ese caso. Es posible que desee algo como esto:

var qry = from c in dc.category_feature_Name_trans_SelectAll_Active()
          join p in dc.product_category_feature_trans_SelectAll()
          on c.cft_id equals p.cft_id into cp
          from p in cp.DefaultIfEmpty()                      
          select new
          
              c.cft_id,
              c.feature_id,
              c.feature_name,
              product_id = p == null ? null : p.product_id,
              value = p == null ? null : p.value 
          ;

… o es posible que desee un manejo diferente. No sabemos los tipos de p.product_id o p.value, que no ayuda. (Por ejemplo, necesitará un poco más de trabajo con el código anterior si product_id es un tipo de valor.)

Estás haciendo la unión izquierda, así que p puede ser null. Tienes que dar cuenta de eso.

Aquí está la consulta que debería funcionar, aunque no sé con certeza qué tipo de valor es p.value. La consulta funcionará si el valor es un tipo de referencia. Si el valor es un tipo de valor, entonces use el molde similar a product_id emitir.

var qry = from c in dc.category_feature_Name_trans_SelectAll_Active()
            join p in dc.product_category_feature_trans_SelectAll()
            on c.cft_id equals p.cft_id into cp
            from p in cp.DefaultIfEmpty()
            select new
            
                c.cft_id,
                c.feature_id,
                c.feature_name,
                product_id = p == null ? (int?)null : p.product_id,
                value = p == null ? null : p.value,
            ;

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *