如何使用LINQ中的条件来重写它?
如果selectID = 0,我希望它运行:
var products = from p in product.Table
orderby p.Name
where (p.stock == stockId)
select p;
如果selectID不为零,我希望它运行:
var products = from p in product.Table
orderby p.Name
where (p.stock == stockId) &&
(p.Id == selectID)
select p;
这在下面可以工作,但是我必须使用“虚拟”第二条件(p.hidden == false)来使三元运算符起作用:
var products = from p in product.Table
orderby p.Name
where (p.stock == stockId) &&
(selectID != 0 ? p.Id == selectID : p.hidden == false)
select p;
有没有一种摆脱(p.hidden == false)的方法,因为在逻辑上它不是必需的,只是在那里可以使操作员工作。谢谢
您可以使用与记录相同的ID作为后备值:
var products = from p in product.Table
orderby p.Name
where p.stock == stockId &&
p.Id == (selectID == 0 ? p.Id : selectID)
select p;
但是,由于这可能导致查询计划效率降低,因此我将仅使用if-else
:
var products = product.Table.Where(p => p.stock == stockId);
if(selectID != 0)
products = products.Where(p => p.Id == selectID);
products = products.OrderBy(p=> p.Name);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句