我想知道是否有更有效的方式来完成我需要做的事情:
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子句?
答案 0 :(得分:5)
是的,听起来像你想要的东西:
int targetId = HttpContext.Current.User.IsInRole("Admin") ? 2 : 1;
return dbContext.Prog_Search1(searchField, searchString, searchOper)
.Where(a => a.Id == targetId);
请注意,这并未真正改变效率,但确实会影响可读性。
答案 1 :(得分:5)
我想你想要这样的东西:
var id = HttpContext.Current.User.IsInRole("Admin") ? 2 : 1
return dbContext.Prog_Search1(searchField, searchString, searchOper)
.Where(a => a.Id == id);
答案 2 :(得分:1)
可替换地:
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
命令会更加不同。