LINQを使用してCASEステートメントでネイティブのSELECTステートメントを変換する際に問題があります。ケースステートメントでSQLステートメントを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の場合、空の文字列に
- を返します
else別のselect文を実行して、vehl_rampidとramp_rampidが等しいランプテーブルからramp_nameを取得します。
私は、次の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?
LINQコードも試してください。 –