запрос linq для объединения двух таблиц и получения счетчика значений одной таблицы из другой

У меня две таблицы Клиенты, Заказы

Клиенты CustomerID FName LName

Заказы OrderId CustomerID OrderDate

Я хочу сделать оператор linq, который может объединить эти две таблицы и получить
FName, LName, количество заказов для каждого клиента


person Community    schedule 07.05.2009    source источник


Ответы (1)


from c in db.Customers
let theCount = c.Orders.Count()
select new {c.FName, c.LName, theCount}

http://msdn.microsoft.com/en-us/library/bb425822.aspx#linqtosql_topic11

Эти операции доступа преобразуются в более сложные соединения или коррелированные подзапросы в эквивалентном SQL, позволяя вам перемещаться по графу объектов во время запроса.

person Amy B    schedule 07.05.2009
comment
Это предполагает тип отношения linq-to-objects, где объект Customer содержит список заказов. - person Winston Smith; 07.05.2009
comment
LinqToSql может моделировать эти отношения. Эти оценки выполняются на 100% в базе данных. - person Amy B; 07.05.2009
comment
Предполагает ли это, что отношения в базе данных настроены правильно с заказами, имеющими FK для клиентов? Иначе как бы он узнал, что такое c.Orders? - person Winston Smith; 07.05.2009
comment
Не имеет значения, установлен ли FK в базе данных, просто добавьте отношение в конструкторе LinqToSql. - person Amy B; 07.05.2009