如果和其他声明与linq

时间:2013-02-18 08:33:54

标签: c# .net linq linq-to-sql

我试图在我的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,但我的代码没有运气,那么你有任何建议如何显示正确的结果。

1 个答案:

答案 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?

时,此代码才有效