Присоединяйтесь в linq - PullRequest
0 голосов
/ 24 марта 2009

возможно ли объединить в linq и возвращать данные только из одного набора данных, где присутствовал другой ключ, немного похоже на:

 var q = from c in customers
            join o in orders on c.Key equals o.Key
            select new {c.Name, o.OrderNumber};

, а затем вместо того, чтобы возвращать только две записи, затем возвращаются такие клиенты, как:

  var q = from c in customers
                join o in orders on c.Key equals o.Key
                select c;

Когда я пытаюсь сделать (что-то подобное), я получаю эту ошибку: Указанное выражение LINQ содержит ссылки на запросы, связанные с различными контекстами.

Ответы [ 3 ]

0 голосов
/ 25 марта 2009

Ошибка указывает на другую проблему:
Вы должны использовать один и тот же DataContext для каждого объекта в запросе, если вы используете Linq to SQL.

Ваш код должен выглядеть примерно так:

using (MyDataContext dc = new MyDataContext())
{
    var q = from c in dc.customers
            join o in dc.orders on c.Key equals o.Key
            select c;

    // process q within the DataContext
    // the easies would be to call q.ToList()
}
0 голосов
/ 28 октября 2009

Будет ли в EF 4.0 создание соединения из нескольких контекстов?

Например:

TestModelEntities e1 = new TestModelEntities();
        TestModelEntities e2 = new TestModelEntities();

        var d = from firme1 in e1.firme
                join g in e2.grad on firme1.grad.grad_id equals g.grad_id
                select firme1;
0 голосов
/ 24 марта 2009

Я собираюсь предположить, что вы пропустили предложение Where, включающее таблицу заказов (иначе соединение было бы бессмысленным)

В этом случае вы можете просто попросить Linq определить соединение.

var q = from c in customers
       where c.Orders.Any(o=> o.ProductCode == productCode)
       select c;

Linq2Sql автоматически создаст свойство Orders, если у вас определен внешний ключ; Я считаю, что с Entity Framework, вы должны вручную указать его.

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