Вот ситуация, которую я пытался решить
Давайте возьмем таблицу Employee
Create Table Employee
(
Employeeid int primary key,
EMPname varchar(50),
ManagerEmplId int reference key Employee (EmployeeID)
TreeLevel int,
....
)
Здесь мне нужно найти всех сотрудников уровня листьев.
Сотрудники конечного уровня - все сотрудники, у которых есть менеджер, но никто не отчитывается перед ними. У меня есть небольшая помощь от базы данных, в которой есть столбец TreeLevel, где я могу указать, выбрать кого угодно на уровне 3, но мне нужна клаузула UNION, которая даст мне всех сотрудников на уровне дерева 2, которые не имеют отчетов ни о каких сотрудниках.
У меня есть только 3 уровня дерева, если это помогает в создании запроса linq.
return ((from b in _db.Employees
&& b.TreeLevel==3 && b.DeletedDate== null
select b)
.Union
(from b in _db.Employees
select b)
)
.ToDictionary(k => k.EmployeeID, v => v.EMPname);
UPDATE:
Реальный запрос:
(from fi in firm
join bra in _db.Branches on fi.BranchID equals bra.ParentBranchID into g
from sc in g.DefaultIfEmpty()
where fi.DeletedDate == null && g == null
select fi)
.ToList()
.ToDictionary(k => k.BranchID, v => v.BranchName);
Ошибка:
Cannot compare elements of type 'System.Collections.Generic.IEnumerable`1'.
Only primitive types (such as Int32, String, and Guid) and entity types are supported.