Преобразование 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();

Я получаю другой набор результатов в вышеупомянутых случаях. Я пытаюсь выполнить ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ для одной таблицы, все должны быть ВНУТРЕННИЕМИ СОЕДИНЕНИЯМИ

Пожалуйста, не стесняйтесь комментировать что-то неясное. Любая ссылка или предложения высоко ценится.

0 ответов

Другие вопросы по тегам