Here is situation I have been trying to solve
Lets take a Employee table
Create Table Employee
(
Employeeid int primary key,
EMPname varchar(50),
ManagerEmplId int reference key Employee (EmployeeID)
TreeLevel int,
....
)
Here i need to find all leaf level employees.
Leaf Level Employees - All employees who have manager but they do not have anybody reporting to them. I have a little help from db which has TreeLevel column where I can specify pick anybody at level 3 but I need a UNIONclause which will get me all employees at treelevel 2 that do not have any employees reporting. I have only 3 levels of tree if that helps in creating linq query.
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: The real query:
(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);
Error:
Cannot compare elements of type 'System.Collections.Generic.IEnumerable`1'.
Only primitive types (such as Int32, String, and Guid) and entity types are supported.
* join firm in _db.Branches on b.BranchID equals firm.ParentBranchID into
* from sc in g.DefaultIfEmpty()
* wher b.DeletedDate == null && g == null
* select b).ToList()
* .ToDictionary(k => k.BranchID, v => v.BranchName);
* Getting error
* Cannot compare elements of type 'System.Collections.Generic.IEnumerable`1'. Only primitive types (such as Int32, String, and Guid) and entity types are supported. – user1147971 Jan 13 '12 at 18:07