从我可以看到,可以在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));
答案 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))