0

次のようなものを要約するための私のlinqクエリ-

       string CustomerID;// can be "ALL" or any value

        var itemlist = ( from itmhstry in context.ItemHistories
               join itm in context.Items on itmhstry.ItemID equals itm.ItemID into itm_join
               where itmhstry.CustomerID == CustomerID
.......................)

クエリは必要な値を選択します

CustomerID値が ALL/NULLの場合にすべての値を選択する方法 (select * >> フィルターなし) この目的のためにwhere句を組み立てる方法は?

同じクエリを if else で書き直して、この問題を処理する 2 つの異なるクエリを作成できますが、もっと簡単な方法はありますか?

4

1 に答える 1

6

これを試して:

var itemlist = from itmhstry in context.ItemHistories
               join itm in context.Items on itmhstry.ItemID equals itm.ItemID into itm_join
               where string.IsNullOrEmpty(CustomerID) || 
                     (CustomerID == "ALL") ||
                     (itmhstry.CustomerID == CustomerID) 

CustomerIDが空、null、または「ALL」の場合、句の最初または 2 番目の述語が評価whereされtrue、フィルタリングは適用されません。CustomerIDが空でなく、null でなく、「すべて」でもない場合は、最初のクエリになります。

于 2014-12-17T06:41:08.607 に答える