3
전 Linq를 SQL에 사용하여 전체 외부 조인을하려고합니다. 기본 예제에서이 작업을 수행했지만 전체 외부 조인의 각면이 다른 내부 조인에서 생성 될 때 작동하지 않았습니다. 코드는 다음과 같습니다. 아마도이 쿼리는 적은 쿼리에 포함될 수 있음을 알고 있습니다. 그러나 가능한 한 읽기 쉽도록 쿼리를 분할하려고합니다. 성능은이 경우 문제가되지 않습니다. 내 테스트에서전체 외부 조인 - Linq to SQL
var productIds = db.OrderItemsIncoming.Select(i => i.ProductID)
.Union(db.OrderItemsOutgoing.Select(o => o.ProductID))
.Distinct();
var ordersIn = from o in db.OrdersIncoming
join i in db.OrderItemsIncoming on o.OrderNumber equals i.OrderNumber
select new { o, i };
var ordersOut = from o in db.OrdersOutgoing
join i in db.OrderItemsOutgoing on o.OrderNumber equals i.OrderNumber
select new { o, i };
var fullOuterJoinResults = from i in ordersIn
join o in ordersOut on i.i.ProductID equals o.i.ProductID into t
from o in t.DefaultIfEmpty()
where i == null^o == null
select new { i, o };
의 ordersIn 결과가 비어이며, ordersOut 결과는 하나의 행이 있습니다. 그래서 마지막 fullOuterJoinResults에 행이 있어야하지만 비어 있습니다.