2016-08-12 3 views
0

Привет Я пытаюсь получить этот sql-запрос в linq, и у меня возникают проблемы из-за соединения.Sql to Linq Query Issue

SQL:

SELECT 
//fields here 
FROM CustomFields cf LEFT JOIN CustomValues cv on cv.CustomFieldID = cf.CustomFieldID AND cv.RefID=362373 
WHERE cf.OrganizationID = 1078 
AND cf.RefType=9 
ORDER BY cf.Position 

LINQ у меня есть:

from cf in CustomFields 
join cv in CustomValues on cf.CustomFieldID equals cv.CustomFieldID 
where cf.OrganizationID == 1078 && cf.RefType == 9 && cv.RefID == 362373 
select cf 
+1

вы также можете уточнить ваш спросить и выдать вы столкнулись – TheGameiswar

+0

Какие проблемы вы сталкиваетесь? –

+0

Вы выполняете 'inner join', а не' left join' – Rahul

ответ

2
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