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,
;