0
에 LINQ 쿼리에 가입 왼쪽
나는 다음과 같은 SQL 쿼리가 있습니다 는 FF4
SELECT DISTINCT *
FROM Documents d
LEFT JOIN
Invoices
ON (i.invoicedocumentid = d.id or i.jobsheetdocumentid = d.id)
INNER JOIN
PurchaseOrders PO ON i.poid = PO.id
LEFT JOIN
HelpDeskFaults f
ON f.id = PO.helpDeskFaultId
LEFT JOIN stores s
ON s.id = f.storeid
WHERE s.name = 'Linden Drive'
OR d.id in (
SELECT u.id as 'docid'
FROM documents u
INNER JOIN stores s
ON u.storeid = s.id
WHERE s.name = 'Linden Drive'
)
ORDER BY d.Id
지금까지 내 LINQ 쿼리는 다음과 같습니다를 :
var documents = from doc in context.Documents
from invoice in context.Invoices
join po in context.PurchaseOrders on invoice.PurchaseOrder.PurchaseOrderId equals po.PurchaseOrderId
join hdf in context.HelpDeskFaults on po.HelpdeskFaultId equals hdf.ID into hdfpo
from hs in hdfpo.DefaultIfEmpty()
join store in context.Stores on hs.StoreID equals store.ID into hsstore
from hss in hsstore.DefaultIfEmpty()
where hss.Name.Contains(jobSearchParams.StoreName) && (invoice.InvoiceDocumentId == doc.ID || invoice.JobSheetInvoiceId == doc.ID)
select doc;
그러나 생성 된 SQL이 무엇처럼 아무것도 I 예상했다.
누구든지 내 linq 쿼리를 개선하는 방법에 대한 모든 포인터를 줄 수 있습니다.
적시에 올바른 결과를 반환합니까? 만약 그렇다면 나는 EF가 만든 SQL에 대해 너무 걱정하지 않을 것입니다. – juharr
또한 'hs in po.HelpdeskFaults.DefaultIfEmpty()' – juharr
과 같은 탐색 속성을 사용하여 결과를 반환하지 않고 왼쪽 조인을 수행 할 수도 있습니다. 인스턴트 메신저 지금은 직장에 있지만 SQL은 꽤 멀리 제거됩니다. 나는 왼쪽 조인 구문에 대해 혼란 스럽다. – dagda1