2009-05-12 5 views
0

imbriquées Comment puis-je écrire suivant requête SQL en utilisant LINQLINQ requête

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 
    ) 

Répondre

3

Essayez ceci (formatage oddness par souci d'éviter l'emballage ...)

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; 

Cependant, je serais très tenté de faire cela comme une jointure à la place:

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;