0

我想知道是否有一种更有效的方法来做我需要做的事情:

    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 子句?

4

3 回答 3

5

是的,听起来你想要这样的东西:

int targetId = HttpContext.Current.User.IsInRole("Admin") ? 2 : 1;
return dbContext.Prog_Search1(searchField, searchString, searchOper)
                .Where(a => a.Id == targetId);

请注意,这并不会真正改变效率,但会影响可读性。

于 2013-01-14T15:58:13.643 回答
5

我想你想要这样的东西:

var id = HttpContext.Current.User.IsInRole("Admin") ? 2 : 1
return dbContext.Prog_Search1(searchField, searchString, searchOper)
                .Where(a => a.Id == id);
于 2013-01-14T15:58:30.017 回答
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);

在您的特定实例中不如 pre-setting 整洁i=1 or 2,但如果两个不同的Where命令更加不同,通常会更灵活。

于 2013-01-14T16:00:46.470 回答