關於下面的查詢的一點背景。細胞有1:M到容器和1:M與打印機。我想要一個查詢,它將檢索所有單元格和關聯的容器(如果它們存在)以及關聯的打印機(如果存在)。基本上我想在兩個表上做一個左外連接。以下是我的查詢:如何在Linq Query中執行多個左外連接?
var query = from cell in Cell
join container in Container.Where (row => row.SerialNumber == "1102141") on cell.CellID equals container.CellID
into containers
join printer in Printer.Where (row => row.Name == "PG10RelWarrPrt3") on cell.CellID equals printer.CellID
into printers
select new { Cell = cell, Containers = containers, Printers = printers };
query.Dump();
此查詢有效,但效率不高。它在Container上執行左外連接,但對於每個單元,它執行單獨的查詢來檢索任何Printer行,而不是在Printer上執行左外連接。
我該如何改變它,以便它還在打印機表上進行左外連接?順便說一句,我想要一個分層結果集。 IOW,每個單元應該有一個容器列表和一個打印機列表。當然,如果沒有單元格存在,每個元素都是空的。
http://stackoverflow.com/questions/267488/linq-to-sql-multiple-left-outer-joins – diceguyd30 2010-11-24 13:23:21
@ diceguyd30 - 我看到之前,我發佈我的問題。這並不能解決我的問題。請注意,我聲明我想要一個分層結果集,而不是一個平坦結果集。 DefaultIfEmpty()用於平坦的結果集。 – 2010-11-24 13:28:12