Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ查询C中的多个左连接#_C#_Linq_Left Join - Fatal编程技术网

C# LINQ查询C中的多个左连接#

C# LINQ查询C中的多个左连接#,c#,linq,left-join,C#,Linq,Left Join,我需要有多个左连接的LINQ查询的帮助。这是EF4的LINQ。我编写了SQL并将其转换为LINQ,但不知道LINQ中的“连接”是一个内部连接。我已经找遍了一个例子,但只能找到一个左连接的例子。非常感谢您的帮助 下面是SQL: SELECT s.FirstName, s.LastName, s.StakeholderID, op.ParticipantID, op.SchoolID, oc.CycleNumber, st.SessionTypeID, st.SessionDesc

我需要有多个左连接的LINQ查询的帮助。这是EF4的LINQ。我编写了SQL并将其转换为LINQ,但不知道LINQ中的“连接”是一个内部连接。我已经找遍了一个例子,但只能找到一个左连接的例子。非常感谢您的帮助

下面是SQL:

SELECT
    s.FirstName, s.LastName, s.StakeholderID, op.ParticipantID, op.SchoolID, oc.CycleNumber, 
    st.SessionTypeID, st.SessionDescription, CONVERT(varchar(10),os.SessionDt,101) AS SessionDTrr, 
    os.OSStatus, oee.EvaluatorID
FROM
    Stakeholders s LEFT JOIN ObservationParticipants op ON s.StakeholderID = op.StakeholderID
    LEFT JOIN ObservationEvaluateeEvaluators oee ON op.ParticipantID = oee.EvaluateID
    LEFT JOIN ObservationCycles oc ON oee.ObservationEvaluateeEvaluatorID = oc.ObservationEvaluateeEvaluatorID
    LEFT JOIN ObservationSessions os ON oc.ObservationCycleID = os.ObservationCycleID
    LEFT JOIN SessionTypes st ON os.SessionTypeID = st.SessionTypeID
WHERE 
    oee.EvaluatorID = evaluatorID
这是我转换上述语句的LINQ。我需要左连接。有人可以帮助将此LINQ中的连接转换为左连接吗

from s in Stakeholders
join op in ObservationParticipants
on s.StakeholderID equals op.StakeholderID
join oee in ObservationEvaluateeEvaluators
on op.ParticipantID equals oee.EvaluateID
join oc in ObservationCycles
on oee.ObservationEvaluateeEvaluatorID equals oc.ObservationEvaluateeEvaluatorID
join os in ObservationSessions
on oc.ObservationCycleID equals os.ObservationCycleID
join st in SessionTypes
on os.SessionTypeID equals st.SessionTypeID
where oee.EvaluatorID == evaluatorID
select new { 
            s.FirstName, s.LastName, s.StakeholderID, 
            op.ParticipantID, op.SchoolID, oc.CycleNumber,
            st.SessionTypeID, st.SessionDescription, os.SessionDt,
            os.OSStatus
            }

看起来你的产品是混合技术。linq查询对象,其中sql查询关系数据库。非常不同的事情。linq有不同的实现: linq到sql EF查询语言 linq到xml 林克至新罕布什尔州 linq到厨房水槽

每个linq提供程序都会以不同的方式翻译查询,翻译的方式和地点并不总是很明显


在本例中,您需要通知我们您使用的是什么linq提供程序,从那里我们可以帮助将sql查询转换为linq2?语句。

-我希望,如果设置正确,您也可以帮助签出下载LinqPad,它可以基于您当前的linq查询生成linq查询。我实际上使用LinqPad创建了上面的linq查询。我不认为LinqPad可以接受SQL并将其转换为linq。。我以前做过,我相信我把它连接到了一个实体连接上,我不知道你说的linq提供者是什么意思。这是在使用实体框架的项目中。这是一个C#项目,我正在使用linq来创建实体。SQL语句是提供给我的,我只将它用作转换为linq的基础。我曾经成功地采用过这种方法。linq提供程序是IQueryable的一种实现。linq的基础。