LINQ案例切换在哪里查询

时间:2014-05-28 19:25:21

标签: c# sql linq

从我可以看到,可以在LINQ查询中包含case-switch的逻辑,但我似乎无法弄清楚如何去做。

基本上我有三种可能的情况,我希望Where子句不同。我接受的参数实际上是一个int,可以是1,2或3,所以我只需要以某种方式将它与我的where子句相关联。

谢谢!

var parameter = Int32.Parse(Filter);
var queryString =
                from m in db.Movies

                join me in db.MovieEmployees
                on m.ID equals me.movieID

                join e in db.Employees
                on me.employeeID equals e.ID

                join r in db.Roles
                on me.roleID equals r.ID

                    //when parameter = 1
                    where m.Name.Contains(searchString)
                    //when parameter = 2
                    where e.Name.Contains(searchString)                      
                    //when parameter = 3
                    where r.RoleType.Contains(searchString)                              

      select new StarringViewModel { employeeID = e.ID, movieID = m.ID, roleID = r.ID };

      return View(queryString.Distinct().ToList().OrderBy(x => x.movieName));

1 个答案:

答案 0 :(得分:6)

试试这个

where (parameter == 1 && m.Name.Contains(searchString))
                    //when parameter = 2
      || (parameter == 2 && e.Name.Contains(searchString))                      
                    //when parameter = 3
      || (parameter == 3 && r.RoleType.Contains(searchString))