Linq最有效的方法



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

    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命令差异更大,则通常更灵活。

相关内容

  • 没有找到相关文章

最新更新