LINQ Nested Query

How can I write the following SQL query using LINQ

SELECT priority 
FROM Active_SLA 
WHERE APP_ID = (
        SELECT APP_ID 
        FROM FORM_PAGES 
        WHERE PAGE_ADDRESS = @address
    ) 
AND PERSON_ID = (
        SELECT PERSON_ID 
        FROM PERSON_DEVICES 
        WHERE DEVICE_NUMBER = @devicenum
     )

      

0


a source to share


1 answer


Try this (odd formatting to avoid wrapping ...)

var query = from sla in db.ActiveSLA
            where sla.AppId == (db.FormPages
                         .Where(page => page.PageAddress == address)
                         .Single().AppId)
               && sla.PersonId == (db.PersonDevices
                         .Where(pd => pd.DeviceNumber == deviceNumber)
                         .Single().PersonId)
            select sla.Priority;

      



However, I would be very tempted to do this as a join instead:

var query = from sla in db.ActiveSLA
            join fp in db.FormPages on sla.AppId equals fp.AppId
            where fp.PageAddress == address
            join pd in db.PersonDevices on sla.PersonId equals pd.PersonId
            where pd.DeviceNumber == deviceNumber
            select sla.priority;

      

+3


a source







All Articles