我想知道是否有一种更有效的方法来做我需要做的事情:
return HttpContext.Current.User.IsInRole("Admin")
? dbContext.Prog_Search1(searchField, searchString, searchOper).Where(a => a.Id == 2)
: dbContext.Prog_Search1(searchField, searchString, searchOper).Where(a => a.Id == 1)
我想知道是否有一种聪明的方法只使用一个
dbContext.Search1(searchField, searchString, searchOper)
与我正在使用的2,然后有条件地执行Where子句?
是的,听起来你想要这样的东西:
int targetId = HttpContext.Current.User.IsInRole("Admin") ? 2 : 1;
return dbContext.Prog_Search1(searchField, searchString, searchOper)
.Where(a => a.Id == targetId);
请注意,这并没有真正改变的效率,但它确实影响了可读性
我想你需要这样的东西:
var id = HttpContext.Current.User.IsInRole("Admin") ? 2 : 1
return dbContext.Prog_Search1(searchField, searchString, searchOper)
.Where(a => a.Id == id);
或者:
var srch = dbContext.Prog_Search1(searchField, searchString, searchOper);
return HttpContext.Current.User.IsInRole("Admin")
? srch.Where(a => a.Id == 2)
: srch.Where(a => a.Id == 1);
在您的特定实例中不如预先设置i=1 or 2
整洁,但如果两个不同的Where
命令差异更大,则通常更灵活。