Получение объектов с использованием LINQ и хранимых процедур - PullRequest
0 голосов
/ 25 мая 2011

У меня есть хранимая процедура, которая возвращает данные в этом формате:

EmployeeID | DepartmentID
---------------------
1 | 1
2 | 1
3 | 2
4 | 4
5 | 4

Я получаю результаты примерно так:

List<spResult> results = DataContext.sp().ToList();

Я хотел бы получить список сотрудников для определенного отдела на основе данных, возвращаемых из хранимой процедуры. Что-то вроде:

int departmentId = 1;

List<Employee> employees = (from e in DataContext.Employees
                            //where...
                            select e).ToList();

Как мне отформатировать мое условие where, чтобы получить идентификаторы EmployeeID из набора результатов, которые имеют данный DepartmentID?

Ответы [ 3 ]

2 голосов
/ 26 мая 2011

Как насчет:

List<spResult> results = DataContext.sp().ToList();

int departmentId = 1;

var departmentEmployees = from de in results
                          where de.DepartmentId == departmentId
                          select de.EmployeeID;

List<Employee> employees = (from e in DataContext.Employees
                            where departmentEmployees.Contains(e.ID)                            
                            select e).ToList();
1 голос
/ 26 мая 2011

Вы также должны быть в состоянии сделать что-то вроде этого:

List<Employee> employees = DataContext.Employees.Where(e => empKeys.Contains(e.EmployeeID)).ToList()
1 голос
/ 26 мая 2011

Вы можете получить подмножество ключей:

var empKeys = results.Where(i => i.DepartmentID = departmentID);

И затем использовать этот список в запросе как:

List<Employee> employees = (from e in DataContext.Employees
                            where empKeys.Contains(e.EmployeeID)
                            select h).ToList();

HTH.

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