Я хотел бы добавить еще одну вещь. В LINQ to SQL, если ваша БД построена правильно, а ваши таблицы связаны с помощью ограничений внешнего ключа, то вам вообще не нужно выполнять соединение.
Используя LINQPad, я создал следующий запрос LINQ:
//Querying from both the CustomerInfo table and OrderInfo table
from cust in CustomerInfo
where cust.CustomerID == 123456
select new {cust, cust.OrderInfo}
Который был переведен в (слегка усеченный) запрос ниже
-- Region Parameters
DECLARE @p0 Int = 123456
-- EndRegion
SELECT [t0].[CustomerID], [t0].[AlternateCustomerID], [t1].[OrderID], [t1].[OnlineOrderID], (
SELECT COUNT(*)
FROM [OrderInfo] AS [t2]
WHERE [t2].[CustomerID] = [t0].[CustomerID]
) AS [value]
FROM [CustomerInfo] AS [t0]
LEFT OUTER JOIN [OrderInfo] AS [t1] ON [t1].[CustomerID] = [t0].[CustomerID]
WHERE [t0].[CustomerID] = @p0
ORDER BY [t0].[CustomerID], [t1].[OrderID]
Обратите внимание на LEFT OUTER JOIN
выше.