Я пытаюсь выполнить соединение, которое может объединиться с возможным нулевым значением.
from data in Data
join d1 in Data on new { a = data.pId, b = language } equals new { a = d1.pId, b = d1.language } into j1
from dta1 in j1.DefaultIfEmpty()
join d2 in Data on new { a = data.pId, b = fallback} equals new { a = d2.pId, b = d2.language } into j2
from dta2 in j1.DefaultIfEmpty()
where ((int?)dta1.id ?? dta2.id) == data.Id
select data;
Проблема здесь в том, что pId может быть нулевым, и если это так, объединение не будет совпадать при сравнении
data.pId = null
вместо
data.pId is null
В обычном предложении where я мог бы сделать object.Equals (data.pId, d1.pId), и он мог бы выполнить нулевую проверку, но как я могу сделать это в соединении?