Reputation: 85
I have a linq to entities with a return of IQueryable
. I need to make self join (e.empid == empid
) to be first item. How can I do it?
public IQueryable<vmEmp> GetEmpUnder(string empid)
{
var dataContext = new Entities();
var Emp = from e in dataContext.lstEmp.Where(e => e.Supervisor == empid || e.empid == empid)
select new vmEmp
{
EmpId = e.empid,
Name = e.LName + ", " + e.FName
};
var under = Emp.ToList().Where(e => DirectCount(e.EmpId) > 0);
Emp = under.AsQueryable<vmEmp>();
return Emp;
}
Upvotes: 1
Views: 495
Reputation: 149020
You can use orderby
with Booleans but note that it orders false before true, so you need to use descending
. Also note you can combine that Where
into the rest of the query:
var Emp = from e in dataContext.lstEmp
where e.Supervisor == empid || e.empid == empid
orderby e.empid == empid descending
select new vmEmp
{
EmpId = e.empid,
Name = e.LName + ", " + e.FName
};
Or you can make two queries and concatenate them together, like this:
var Emp =
(from e in dataContext.lstEmp
where e.Supervisor == empid
select new vmEmp
{
EmpId = e.empid,
Name = e.LName + ", " + e.FName
}).Concat(
from e in dataContext.lstEmp
where e.empid == empid
select new vmEmp
{
EmpId = e.empid,
Name = e.LName + ", " + e.FName
});
Upvotes: 3