Как вы делаете несколько внутренних соединений в Linq to Entities - PullRequest
6 голосов
/ 18 сентября 2009

Я уже искал через SO и не смог найти подходящее решение для этого. Я просто пытаюсь понять, каков синтаксис для нескольких внутренних объединений в Linq to Entities. Спасибо

Ответы [ 2 ]

9 голосов
/ 18 сентября 2009

Ответ Джона сработает, но IMHO при использовании объединения в LINQ to Entities обычно неверно , поскольку он дублирует код в вашей модели. Я могу переписать запрос Джона намного проще в L2E:

var query = from customer in db.Customers
            from order in customer.Orders
            from product in order.Products
            from info in product.Info
            select new
            {
                customer.Name, 
                info.BriefDescription
            }

Это около 50% текста и 0% дублированного кода. Учтите, что ваши отношения уже определены в вашей БД и в вашей модели. Вы действительно хотите дублировать их снова в каждом написанном запросе и прерывать их при рефакторинге своей модели?

7 голосов
/ 18 сентября 2009

Ну, я не знаю LINQ to Entities особенно, но обычный синтаксис LINQ был бы:

var query = from customer in db.Customers
            join order in db.Orders on customer.ID equals order.ID
            join product in db.Products on order.ProductID equals product.ID
            join info in db.Info on product.InfoID equals info.ID
            select new { customer.Name, info.BriefDescription };

(т. Е. Всего несколько join предложений).

Теперь я подозреваю, что вы уже пробовали это - если так, что пошло не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...