I was trying to convert a SQL Server query with multiple table joins and multiple conditions in a join to LINQ. I am getting an error while trying to use multiple conditions in join using &&.
Below is my SQL Server query.
SELECT j.ID,
j.OnTime AS 'Alarm Appear Time',
j.OffTime AS 'Alarm Disappear Time',
j.OnNoticeTime AS 'Alarm Ack Time',
j.OffNoticeTime AS 'Alarm Close Time',
j.InstanceID AS 'Asset ID',
i.RemarkPath AS 'Asset',
j.PropertyID AS 'Message ID',
p.Remark AS 'Alarm Message',
a.X4AlarmGroup_ID AS 'Priority ID',
g.Name AS 'Priority Group'
FROM [XAMRuntimeX4].[dbo].[X4Journals] j
JOIN [XAMRuntimeX4].[dbo].[V_X4InstanceRemarks] i
ON j.InstanceID = i.Instance_ID
JOIN [XAMRuntimeX4].[dbo].[V_AutomationControlPropertyRemarks] p
ON j.PropertyID = p.Property_ID
JOIN [XAMControlX4].[dbo].[X4AlarmConfigs] a
ON j.InstanceID = a.X4Instance_ID
AND j.PropertyID = a.X4Property_ID
JOIN [XAMControlX4].[dbo].[X4AlarmGroups] g
ON a.X4AlarmGroup_ID = g.ID
WHERE i.Language = 'iv'
AND p.LANGUAGE = 'iv'
ORDER BY j.OnTime DESC;
Below given is my attempt to convert it into LINQ
var finalAlarm = xAMRuntimeX4Context.X4Journals
.Join(xAMControlX4Context.X4InstanceRemarks,
j => j.InstanceID, i => i.Instance_ID, (j, i) => new { j, i })
.Join(xAMControlX4Context.AutomationControlPropertyRemarks,
ppc => ppc.j.PropertyID, p => p.Property_ID, (ppc, p) => new { ppc, p })
.Join(xAMControlX4Context.X4AlarmConfigs,
(ppc2 => ppc2.ppc.j.InstanceID, a => a.X4Instance_ID) &&
(ppc2 => ppc2.ppc.j.PropertyID, a => a.X4Property_ID),
(ppc2, a) => new { ppc2, a });