cp.DefaultIfEmpty()
возвращает последовательность, которая будет иметь одно нулевое значение, если cp
было пустым.
Это означает, что вы должны учитывать тот факт, что p
в
from p in cp.DefaultIfEmpty()
может быть нулевым. Теперь вы действительно не сказали, что вы хотите, чтобы произошло в этом случае. Вы можете захотеть что-то вроде этого:
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
};
... или вам может понадобиться другая обработка. Мы не знаем типы p.product_id
или p.value
, что не помогает. (Например, вам нужно немного больше поработать с приведенным выше кодом, если product_id
является типом значения.)