簡體   English   中英

Linq最有效的方法

[英]Linq most efficient way

我想知道下面是否有更有效的方法來完成我需要做的事情:

    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命令之間的差異更大時更加靈活。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM