Mik*_*owe 1 c# linq asp.net-mvc asp.net-mvc-4 entity-framework-5
如何使用LINQ中的条件重写它?
如果selectID = 0,我希望它运行:
var products = from p in product.Table
orderby p.Name
where (p.stock == stockId)
select p;
Run Code Online (Sandbox Code Playgroud)
如果selectID不为零,我希望它运行:
var products = from p in product.Table
orderby p.Name
where (p.stock == stockId) &&
(p.Id == selectID)
select p;
Run Code Online (Sandbox Code Playgroud)
这下面有效,但是我必须使用"虚拟"第二个条件(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;
Run Code Online (Sandbox Code Playgroud)
有没有办法摆脱(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;
Run Code Online (Sandbox Code Playgroud)
但是,由于这可能会导致查询计划效率降低,我只需使用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);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
152 次 |
最近记录: |