Я пытаюсь использовать Linq to 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 имели строку, но она пуста.