Linq - объединяет набор результатов одного запроса с другой таблицей - PullRequest
2 голосов
/ 12 марта 2020

У меня есть таблица компиляций, в которой указаны сведения о сотрудниках и их соответствиях. Я получаю сотрудников, чей ComplaianceStateId равен 6 или 9.

Я должен получить полное имя сотрудника этих сотрудников у мастера Таблица tblEmployee.

Имя таблицы - tblEmployee, а имя столбца - полное имя

EmployeeID - это общий ключ между этими двумя таблицами tblEmployee и tblEmployeeCompliation

List<Int> employeeIds = new List<int>();
List<string> employeeNames = new List<string>();

employeeIds = EMPDB.tblEmployeeCompliations.Where( e=> e.IsActive == true && (e.ComplianceStateId == 6 || e.ComplianceStateId == 9)).Select( e => e.EmployeeID).Distinct().ToList();
employeeNames = //**//

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

Вам необходимо присоединиться к tblEmployeeCompliation и tblEmployee на основе EmployeeID.

Пример:

var employeeNames =  EMPDB.tblEmployeeCompliations.Join( EMPDB.tblEmployee,
                 comp => comp.EmployeeID,
                 cus => cus.EmployeeID,
                 (comp, cus) => new { comp, cus })
                 .Where(e => e.comp.IsActive && (e.comp.ComplianceStateId == 6 || e.comp.ComplianceStateId == 9))
                 .GroupBy(g=>g.cus.FullName)
                 .Select(x=>x.Key);

ИЛИ

var employeeNames  = from comp in EMPDB.tblEmployeeCompliations 
          join cus in EMPDB.tblEmployee on comp.EmployeeID equals cus.EmployeeID
          where comp.IsActive=true && (comp.ComplianceStateId == 6 || comp.ComplianceStateId == 9)
          group new { cus, comp } by new { cus.FullName } into g
          select g.Key.FullName;

Пожалуйста, прочитайте эту статью: LINQ: Distinct () не работает должным образом

0 голосов
/ 12 марта 2020

Мне нужно получить сотрудника Полное имя этих сотрудников из основной таблицы tblEmployee

. По вашему требованию вы должны выбрать FullName вместо EmployeeID

var result = EMPDB.tblEmployeeCompliations
                  .Where(e => e.IsActive && (e.ComplianceStateId == 6 || e.ComplianceStateId == 9))
                  .Select(e => e.FullName).Distinct().ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...