3

次のようにLinqステートメントを使用する必要があります

      var data = db.tbl1
      .Where(w => clientIds == clientid && w.Source == source);

ソースを取得するドロップダウンがあります。ドロップダウン値は次のとおりです。

All
NewsPaper
Web

問題は、NewsPaper と Web が Source の有効な値です。すべてではありません。All は、レコードが NewsPaper または Web である可能性があることを意味します。

All を選択した場合、All が NewsPaper または Web を意味するように w.Source を変更するにはどうすればよいですか。以下に示すように、2 つの個別のクエリを実行できますが、実行できません。

    if(source == "All")
    {
       var data = db.tbl1
      .Where(w => clientIds == clientid);
    }
    else
    {
       var data = db.tbl1
      .Where(w => clientIds == clientid && w.Source == source);
    }

私が持っているクエリは実際には上記のものよりも複雑であるため、1 つのクエリで行うのが好きです。

前もって感謝します

4

2 に答える 2

5

これを試して:

var data = db.tbl1
  .Where(w => clientIds == clientid && (source == "All" || w.Source == source));
于 2013-03-20T21:00:52.710 に答える
4

@mattytommoの回答は受け入れられますが、少し分けたいと思います。IMO もう少し読みやすい。

var data = db.tbl1.Where(w => clientIds == clientid);

if (source != "All")
    data = data.Where(w => w.Source == source);
于 2013-03-20T21:02:53.350 に答える