Если вы хотите «мыслить в SQL», вы можете сделать это как выражение запроса:
int customerId = ...;
var query = from detail in OrderDetails
where detail.CustomerId == customerId
join order in Orders on detail.OrderId equals order.OrderId
select order;
Обратите внимание, что это вообще не касается таблицы «Клиенты» ... Я предполагаю, что существует достаточно реляционных ограничений, чтобы гарантировать, что OrderDetails.CustomerId
действительно ссылается на реального клиента.
Если у вас все отношения настроены надлежащим образом, вы можете использовать что-то вроде ответа Шёрда. Обратите внимание, что сначала будет извлечена сущность Customer
, а вышеупомянутый запрос - нет. Это более ОО-образный способ думать о вещах.
РЕДАКТИРОВАТЬ: Как представляется, ваши отношения настроены надлежащим образом, два варианта:
// This will involve checking the customer data first
var customer = db.Customers.SingleOrDefault(c => c.CustomerId == customerId);
if (customer != null)
{
var orders = customer.Orders;
}
// This shouldn't... hopefully :) You'll end up with an empty sequence if
// the customer doesn't exist
var orders = db.Customers.Where(c => c.CustomerId == customerId)
.SelectMany(c => c.Orders);