[英]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.