0

我正在尝试在我的 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,但是我的代码不走运,那么您对如何显示正确的结果有什么建议吗?

4

1 回答 1

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 或 null。如果是,则返回u.DBL / 2 * 3,否则返回u.TPL自身。此代码仅在u.TPL可以为空(定义为decimal?)时才有效

于 2013-02-18T08:38:58.867 回答