我试图在我的linq查询中使用if和else语句但我无法显示正确的结果,下面你可以看到代码的一部分:
from c in dc.Train_TBLs select new {c.CodeTrain,
DBL1 = (from u in dc.Train_NormalRate_TBLs where u.CodeTrainID == c.CodeTrainID orderby u.NormalRateID ascending select u.DBL).First(),
TPL1 = (from u in dc.Train_NormalRate_TBLs where u.CodeTrainID == c.CodeTrainID orderby u.NormalRateID ascending select u.TPL == (decimal?)null ? u.DBL / 2 * 3 == (decimal?)null : u.TPL != 0).First(),....}
在TPL1字段中,我的意图是显示“u.TPL”中的值等于“0”或null然后将字段“u.DBL”中的值除以2并乘以3,但我的代码没有运气,那么你有任何建议如何显示正确的结果。
答案 0 :(得分:3)
我想这就是你想要的:
select ((u.TPL ?? 0) == 0 ? u.DBL / 2 * 3 : u.TPL)
用此替换您的上一个select
。
你说:
如果“u.TPL”中的值等于“0”或为null,则将字段“u.DBL”中的值除以2并乘以3
(u.TPL ?? 0) == 0
检查u.TPL
为0或为空。如果是,则返回u.DBL / 2 * 3
,否则返回u.TPL
本身。仅当u.TPL
可以为空(定义为decimal?
)