C# 带有linq的If和else语句

C# 带有linq的If和else语句,c#,.net,linq,linq-to-sql,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

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

我想这就是您想要的:

select ((u.TPL ?? 0) == 0 ? u.DBL / 2 * 3 : u.TPL)
将上一次选择的
替换为此

你说:

如果“u.TPL”中的值等于“0”或null,则将从字段“u.DBL”中取值,除以2,再乘以3


(u.TPL??0)=0
检查其
u.TPL
是0还是空。如果是,则返回
u.DBL/2*3
,否则返回
u.TPL
本身。此代码仅在
u.TPL
可为空(定义为
decimal?

我想这就是您想要的:

select ((u.TPL ?? 0) == 0 ? u.DBL / 2 * 3 : u.TPL)
将上一次选择的
替换为此

你说:

如果“u.TPL”中的值等于“0”或null,则将从字段“u.DBL”中取值,除以2,再乘以3


(u.TPL??0)=0
检查其
u.TPL
是0还是空。如果是,则返回
u.DBL/2*3
,否则返回
u.TPL
本身。只有当
u.TPL
可为空(定义为
decimal?

时,此代码才起作用。您是否尝试将其还原为foreach循环并查看出现了什么问题?是否尝试将其还原为foreach循环并查看出现了什么问题?