我的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重写相同的查询,以便有两个不同的查询来处理这个问题,但有没有更简单的方法呢?
答案 0 :(得分:4)
试试这个:
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
为空或为空或" ALL",则where
子句中的第一个或第二个谓词将评估为true
并且不会过滤应用。如果CustomerID
不为空而且不为空且不是"所有",那么您最终会得到初始查询。