如何在带有Contains或Exist或equal运算符的LINQ中使用列表



我使用了一个EmployeeID列表,我想使用LINQ从EmployeeID列表中存在员工id的员工表中找到一个员工。

我尝试了这个查询,但它给了我一个错误。

 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"是员工ID列表

您应该只使用此

p.Isdeleted != true  && p.CNO == iCNO && empIdLst.Contains( p.EmpId )

empIdLst.Any()将返回truefalse,这取决于它是否为空。

看起来你只需要第三个:

    where p.Isdeleted != true && p.CNO == iCNO && empIdLst.Contains(p.EmpId)

在这种情况下,它会返回什么?

最新更新