EF4: присоединение к Entity Query в IEnumerable списке объектов - PullRequest
0 голосов
/ 17 июня 2011

У меня есть два IEnumerables:

IEnumerable<ThisEmployee> thisEmployees;
IEnumerable<ThatEmployee> thatEmployees;

Они заполняются в двух разных контекстах. ThisEmployee и ThatEmployee не совпадают типы. Они не разделяют ничего подобного, кроме свойства EmployeeNumber.

Я хочу получить все ThatEmployee.Notes для любого сотрудника в thatEmployees, который имеет соответствующий EmployeeNumber в thisEmployees.

Я не могу на всю жизнь понять, как.

Ответы [ 3 ]

2 голосов
/ 17 июня 2011

Ваши коллекции происходят из разных контекстов, поэтому сначала получите идентификаторы сотрудников в linq-to-objects:

 var ids = from e1 in thatEmployees
           join e2 in thisEmployees on e1.EmployeeNumber equals e2.EmployeeNumber
           select e1.Id;

Теперь используйте идентификаторы для получения Notes из базы данных в одном запросе

 var notes = from n in context.Notes
             where ids.Contains(n.Employee.Id)
             select n;
0 голосов
/ 17 июня 2011

Так как в двух разных контекстах попробуйте использовать ToList для получения всех объектов.Затем, используя Linq to Objects, вы можете использовать Where(r => thisEmployees.Any(s => s.EmployeeNumber == r.EmployeeNumber)).Не уверен, правильно ли я тебя понял:)

0 голосов
/ 17 июня 2011

Как насчет чего-то вроде:

var notes = thatEmployees
    .Join(thisEmployees,
          ta => ta.EmployeeNumber,
          ti => ti.EmployeeNumber,
          (ta, ti) => ta.Notes)
...