我在使用LINQ轉換CASE語句的本機select語句時遇到問題。將SQL語句轉換爲具有case條件的LINQ
這是在SQL Server中工作的本地SQL:
select
v.vehl_ContainerNo as cont_name, v.vehl_Name,
v.vehl_drivername, v.vehl_entrancedate, v.vehl_customsdec,
c.Capt_AR as VehicleState,
case
when v.vehl_rampid is null
then ''
else (select ramp_Name
from Ramp
where ramp_RampID = v.vehl_rampid)
end as cont_rampid
from
Vehicle v, Custom_Captions c
where
v.vehl_state = c.Capt_Code
and c.Capt_Family = 'vehl_state'
and v.vehl_ClearanceCompany = 471
我想要得到的ramp_name:
如果vehl_rampid爲null,則返回一個空字符串
否則會執行另一個select語句以從rampl表中得到ramp_name,其中vehl_rampid等於ramp_rampid。
當我用下面的LINQ聲明:
//List<qryRslt> query = (from v in db.Vehicles
// join cus in db.Custom_Captions on v.vehl_state equals cus.Capt_Code
// join ram in db.Ramps on v.vehl_rampid equals ram.ramp_RampID
// where
// cus.Capt_Family == "vehl_state" && v.vehl_Deleted == null && v.vehl_ClearanceCompany == p.pusr_CompanyId
// select new qryRslt
// {
// vehl_ContainerNo = v.vehl_ContainerNo,
// vehl_Name = v.vehl_Name,
// vehl_drivername=v.vehl_drivername,
// vehl_entrancedate=v.vehl_entrancedate,
// vehl_customsdec=v.vehl_customsdec,
// VehicleState=v.vehl_state,
// cont_rampid=v.vehl_rampid==null?" ":ram.ramp_Name
// }).ToList();
它給了我一個意外的結果,從寫在SQL Server本機SQL語句的不同
我怎樣才能實現與另一個SQL語句sql在case語句中?
請添加您嘗試的LINQ代碼。 –