There is a query with LINQ

I would like to get a list of employees with LINQ, these employees should have a TypeOfWorkslist typeofWorkpassed ( Id) in the argument

  public class Employee 
    {   
        public virtual IList<EmployeeTypeOfWork> TypeOfWorks { get; set; }
    }

    public class EmployeeTypeOfWork 
    {
        public virtual Guid Id { get; set; }
        public virtual Employee Employee { get; set; }
        public virtual TypeOfWork TypeOfWork { get; set; }
    }

    public class TypeOfWork 
    {
        public virtual Guid Id { get; set; }
    }

    public IList<Employee> ListWithTypeOfWork(IList<Employee> Employees, 
Guid typeOfWorkId)
    {     
        ?????       
    }

I tried this, but I missed something that I think.

        var res = from p in Employees
        where (from pp in p.TypeOfWorks 
    where pp.TypeOfWork.Id == guid select pp.Id).Contains(p.Id)
        select p;
+3
source share
2 answers
public IEnumerable<Employee> ListWithTypeOfWork(IList<Employee> Employees, Guid typeOfWorkId)
{     
    return from emp in Employees
        where emp.TypeOfWorks.Any(x => x != null && x.Id == typeOfWorkId)
        select emp;          
}
+3
source

Try to execute

var res = Employees
  .Where(x => x.TypeOfWorks.Any(w => w.Id == guid))
+6
source

Source: https://habr.com/ru/post/1714897/


All Articles