SQL to LINQ Conversion: Retrieving Container Information
This code snippet showcases the transformation of a SQL query into a LINQ expression. The SQL query retrieves container data and related information from different tables like EXPRESTU, EXCTN, EXDISCNR, EXMBILL, EXVOY, and WORKTB.
The SQL query:
SELECT
GETDATE( ) AS DTNOW,
datediff( hh, getdate( ), EXVOY.INPODDT ) AS HH,
EXPRESTU.CTNNO,
EXPRESTU.CTNOPE,
EXPRESTU.CTNSZ,
EXPRESTU.CTNTP,
EXPRESTU.DESTPORT,
EXPRESTU.CTNREF,
EXPRESTU.EOYPLREF,
EXPRESTU.REMARK,
EXPRESTU.OPERATNO,
EXPRESTU.GYLNO,
EXPRESTU.PLSTUDT,
EXCTN.SEALNO,
EXDISCNR.EXMBLREF,
EXMBILL.CARAGT,
EXMBILL.TRANLB,
EXVOY.VESCD,
EXVOY.VOYNO,
EXVOY.INPODDT,
EXVOY.JGSTDT,
WORKTB.A,
WORKTB.CTNOPE AS WCTNOPE,
EXCTN.PLATFORM,
EXCTN.AREA
FROM
EXPRESTU,
EXDISCNR,
EOYPL,
EXCTN,
EXMBILL,
EXVOY,
WORKTB
WHERE
( EXDISCNR.EXDISREF = EOYPL.EXDISREF )
AND ( EOYPL.EOYPLREF = EXPRESTU.EOYPLREF )
AND ( EXCTN.CTNREF = EXPRESTU.CTNREF )
AND ( EXCTN.EOYPLREF = EXPRESTU.EOYPLREF )
AND ( EXDISCNR.EXMBLREF = EXMBILL.EXMBLREF )
AND ( EXMBILL.EXVOYREF = EXVOY.EXVOYREF )
AND ( ( EXCTN.PROCESSID IN ( '0', '1' ) ) AND ( EXMBILL.DISCTNID = 'W' ) )
AND EXPRESTU.CTNREF= 'ctnref'
The equivalent LINQ expression:
var query = from exprestu in db.EXPRESTU
join eoypl in db.EOYPL on exprestu.EOYPLREF equals eoypl.EOYPLREF
join exctn in db.EXCTN on exprestu.CTNREF equals exctn.CTNREF
join exdiscnr in db.EXDISCNR on eoypl.EXDISREF equals exdiscnr.EXDISREF
join exmbill in db.EXMBILL on exdiscnr.EXMBLREF equals exmbill.EXMBLREF
join exvoy in db.EXVOY on exmbill.EXVOYREF equals exvoy.EXVOYREF
join worktb in db.WORKTB on exctn.CTNOPE equals worktb.CTNOPE
where exctn.PROCESSID == '0' || exctn.PROCESSID == '1' && exmbill.DISCTNID == 'W' && exprestu.CTNREF == 'ctnref'
select new
{
DTNOW = DateTime.Now,
HH = SqlFunctions.DateDiff('hh', DateTime.Now, exvoy.INPODDT),
exprestu.CTNNO,
exprestu.CTNOPE,
exprestu.CTNSZ,
exprestu.CTNTP,
exprestu.DESTPORT,
exprestu.CTNREF,
exprestu.EOYPLREF,
exprestu.REMARK,
exprestu.OPERATNO,
exprestu.GYLNO,
exprestu.PLSTUDT,
exctn.SEALNO,
exdiscnr.EXMBLREF,
exmbill.CARAGT,
exmbill.TRANLB,
exvoy.VESCD,
exvoy.VOYNO,
exvoy.INPODDT,
exvoy.JGSTDT,
A = worktb.A,
WCTNOPE = exctn.CTNOPE,
exctn.PLATFORM,
exctn.AREA
};
This LINQ query joins multiple tables based on their relationships and filters the results based on specific criteria. It demonstrates how to translate SQL joins and conditions into LINQ syntax, enabling data retrieval in a more object-oriented and type-safe way.
原文地址: https://www.cveoy.top/t/topic/nE0P 著作权归作者所有。请勿转载和采集!