Я использовал один список EmployeeID, и я хочу найти сотрудника из таблицы employee, где id сотрудника существует в списке EmployeeID с использованием LINQ.Как использовать список в LINQ с помощью оператора Contains или Exist или equal
Я пробовал этот запрос, но это дало мне ошибку.
objAbs.LstAbscon = (from p in db.Employees
where p.Isdeleted != true && p.CNO == iCNO && p.EmpId.Equals(empIdLst.Any())
where p.Isdeleted != true && p.CNO == iCNO && empIdLst.All(l => l.EmpId.Equals(p.EmpId))
where p.Isdeleted != true && p.CNO == iCNO && empIdLst.Contains(p.EmpId)
select new AbsconModel
{
EmpId = p.EmpId,
PCODE = p.PCODE,
PNAME = p.PNAME,
Department = p.Dept,
Designation = p.Desig,
}).ToList();
В запросе я добавил три предложения where.
Просьба внести предложения для исправления моего запроса.
«empIdLst» является Список Employee идентификаторов
Какие ошибки вы получаете? Особенно на третьем месте, где единственное, что на самом деле означает что-то? –
Если вы придумали 3 разных подхода, почему бы не попробовать каждый отдельно, чтобы увидеть, какие результаты? – juharr
Простым способом разбить ваш запрос является чтение его назад, 'select',' where', 'from',' in'. Если вы это сделаете, это уменьшит когнитивную нагрузку, по-моему, в любом случае. У вас много повторного повторного кода в этом 'where p.Isdeleted! = True && p.CNO == ICNO' Я бы попытался сократить это, особенно в более крупном запросе, дублированные запросы замедлят общую скорость Ваш запрос. – CalebB