[英]LINQ where clause with an if statement
我有配电板LINQ语句,我想按电压类型过滤。 条件是,如果一个电路为230V,则它应过滤所有400V面板,如果一个电路为120V,则应过滤所有208V面板,所有其他电路电压均等于该面板电压。 即400V = 400V。
我需要一个关于电压where子句的条件语句。 这是我的第一次尝试,但似乎对我不起作用。
var panels = from p in context.tblPanels
join x in context.SI_GridCoordinates
on new {fac = p.Facility, X = p.X}
equals new { fac = x.FAB, X = x.GRID}
join y in context.SI_GridCoordinates
on new { fac = p.Facility, Y = p.Y }
equals new { fac = y.FAB, Y = y.GRID }
where p.Train == item.train &&
if (item.voltage == 230) { p.Voltage == 400} else if (item.voltage == 120) { p.Voltage == 208 } else { p.Voltage ==item.voltage}
这显然行不通!
我不喜欢代码中的幻数,但是您可以使用稍微不同的方法来完成所需的工作。
if (item.voltage == 230) { p.Voltage == 400}
else if (item.voltage == 120) { p.Voltage == 208 }
else { p.Voltage ==item.voltage}
变成
((item.voltage == 230 && p.Voltage == 400) ||
(item.voltage == 120 && p.Voltage == 208) ||
(item.voltage != 230 && item.voltage != 120 && p.Voltage ==item.voltage))
条件是,如果一个电路为230V,则它应过滤所有400V面板,如果一个电路为120V,则应过滤所有208V面板,所有其他电路电压均等于该面板电压。 即400V = 400V。
听起来像三元运算符 :
where p.Train == item.train &&
p.Voltage == (item.voltage == 230 ? 400 : item.voltage == 120 ? 208 : item.voltage)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.