LINQ IQueryable с входным параметром List <string> - PullRequest
0 голосов
/ 30 октября 2011

Следующая функция прекрасно работает, если я ввожу одну строку в качестве параметра, но я бы хотел предоставить ей список строк, т.е. вместо того, чтобы указывать имя одного проекта, например «AccountTracker», я могу предоставить ему несколько названий проектов, то есть «AccountTracker», «GameX», «HR1». Как я могу преобразовать свой запрос LINQ для этого?

Существует следующая связь Employee (1 - ) EmployeeProjects ( - 1) Project

[WebGet]
public IQueryable<Employee> GetEmployeesByProjects(string project)
{
   var employees = from ep in CurrentDataSource.EmployeeProjects
          .Include("Project")
          .Include("Employee")
       where ep.Project.ProjectName == project
       select ep.Employee;
   return employees;
}

1 Ответ

2 голосов
/ 30 октября 2011

отправьте проекты в виде списка строк, и вы можете использовать метод Contains, как показано ниже

[WebGet]
public IQueryable<Employee> GetEmployeesByProjects(List<string> projects)
{
   var employees = from ep in CurrentDataSource.EmployeeProjects
          .Include("Project")
          .Include("Employee")
       where projects.Contains(ep.Project.ProjectName)
       select ep.Employee;
   return employees;
}

или вы можете отправить одну строку с проектами как "AccountTracker,GameX,HR1"

[WebGet]
public IQueryable<Employee> GetEmployeesByProjects(string listofprojects)
{
   string[] projects= listofprojects.Split(',');
   var employees = from ep in CurrentDataSource.EmployeeProjects
          .Include("Project")
          .Include("Employee")
       where projects.Contains(ep.Project.ProjectName)
       select ep.Employee;
   return employees;
}
...