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.

SQL to LINQ Conversion: Retrieving Container Information

原文地址: https://www.cveoy.top/t/topic/nE0P 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录