Преобразование SQL-запроса с внутренним и левым соединением в Linq
У меня есть следующий оператор SQL:
SELECT DISTINCT
DH.DeviceId, DH.SNo, DH.UniqueId, DH.IsAssigned,
AL.LookupName, DH[Description], AL.LookupId, AD.DeviceId
FROM
DeviceHardware DH
JOIN
HardwareFeature HF ON DH.DeviceId = HF.DeviceId
JOIN
AssetLookupTypesFeature ALTF ON HF.FeatureId = ALTF.FeatureId
JOIN
AssetLookupType ALT ON ALTF.LookupTypeId = ALT.LookupTypeId
JOIN
AssetLookup AL ON ALT.LookupId = AL.LookupId
LEFT JOIN
(SELECT DeviceId, DeskId
FROM DeskAssignedDevice
WHERE DeskId = 4) AD ON DH.DeviceId = AD.DeviceId
Я пытаюсь преобразовать вышеизложенное в linq, пока я пытался ниже
var result = (from dh in DeviceHardwares join hf in HardwareFeatures on dh.DeviceId equals hf.DeviceId
join altf in AssetLookupTypesFeatures on hf.FeatureId equals altf.FeatureId
join alt in AssetLookupTypes on altf.LookupTypeId equals alt.LookupTypeId
join al in AssetLookups on alt.LookupId equals al.LookupId
join asd in (from asd1 in DeskAssignedDevices where asd1.DeskId== 4
select new {asd1.DeskId,asd1.DeviceId}).DefaultIfEmpty() on dh.DeviceId equals asd.DeviceId
select new {
dh.DeviceId,FoundDeviceId = asd.DeviceId,
dh.SNo,
dh.UniqueId,
dh.IsAssigned,
al.LookupName,
dh.Description,
al.LookupId
}).ToList ().Distinct().Dump();
Я получаю другой набор результатов в вышеупомянутых случаях. Я пытаюсь выполнить ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ для одной таблицы, все должны быть ВНУТРЕННИЕМИ СОЕДИНЕНИЯМИ
Пожалуйста, не стесняйтесь комментировать что-то неясное. Любая ссылка или предложения высоко ценится.