var query = from cf in CustomFields
join cv in CustomValues on cf.CustomFieldID equals cv.CustomFieldID into r
from cv in r.Where(cv => cv.RefID == 362373).DefaultIfEmpty()
where cf.OrganizationID == 1078 && cf.RefType == 9
select cf
А вот какое-то объяснение:
Предложение join
сравнивает указанные ключи для равенства с помощью специальное ключевое слово equals. A join
предложение с выражением into
называется объединением групп. into
ключевое слово для создания идентификатора. Если никакие элементы из правильной исходной последовательности не совпадают с элементом в левом источнике, предложение join создаст пустой массив для этого элемента. Следовательно, объединение группы по-прежнему в основном является внутренним равноценным, за исключением того, что последовательность результатов организована в группы. Чтобы выполнить левое внешнее соединение в LINQ, используйте метод DefaultIfEmpty
в сочетании с объединением групп, чтобы указать правый элемент справа по умолчанию для создания, если элемент слева не имеет совпадений. Предложение where
является фильтрующим механизмом. Он может располагаться почти везде в выражении запроса, за исключением того, что он не может быть первым или последним. Предложение where может появляться до или после предложения группы в зависимости от того, нужно ли фильтровать исходные элементы до или после их группировки.
источник: Microsoft
вы также можете уточнить ваш спросить и выдать вы столкнулись – TheGameiswar
Какие проблемы вы сталкиваетесь? –
Вы выполняете 'inner join', а не' left join' – Rahul