我写了一个类似
的sql查询SELECT TOP 1000
[tlotWeight]
,[TEU]
,[SeaAirFlag]
,CASE
WHEN [SeaAirFlag]='SEA' OR [SeaAirFlag]='Sea'
then [TEU]
else [tlotWeight] end as Volume
FROM [LogisticsBI].[dbo].[GoldenVolume]
我想把它转换成linq c#查询,我试过这样做
(from t in db.GoldenVolumes
select new { Volume=(t.SeaAirFlag=="SEA"|| t.SeaAirFlag=="Sea")?t.TEU: t.tlotWeight)}
).Take(10000).Distinct()
显示linqpad的语法错误请帮我纠正一下在linq中写这个查询的方法
嗯,我看到这里的括号有问题(一次打开,两次关闭):
select new { Volume = (t.SeaAirFlag=="SEA" || t.SeaAirFlag=="Sea") ? t.TEU : t.tlotWeight)}
看起来应该是
select new { Volume = ((t.SeaAirFlag=="SEA" || t.SeaAirFlag=="Sea") ? t.TEU: t.tlotWeight)}
或者
select new { Volume = (t.SeaAirFlag=="SEA" || t.SeaAirFlag=="Sea") ? t.TEU: t.tlotWeight }
这个错误很简单,你把圆括号放错了。
t.tlotWeight)})是错误的,应该是t.tlotWeight})
为了更清晰,最好将它们分割成下一行。
var res = (from t in db.GoldenVolumes
select new
{
Volume = (t.SeaAirFlag.ToUpperInvariant().Contains("SEA")) ?
t.TEU : t.tlotWeight
})
.Take(10000)
.Distinct();