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)

1つだけの賢い使用方法があるかどうか疑問に思っていました

     dbContext.Search1(searchField, searchString, searchOper)

私が使用していて、条件付きで Where 句を実行している 2 とは対照的ですか?

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 よりも整頓されていませんが、一般に、2 つの異なるコマンドがより異なる場合i=1 or 2はより柔軟です。Where

于 2013-01-14T16:00:46.470 に答える