Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
将SQL原始查询转换为Linq_Linq_Sql To Linq Conversion - Fatal编程技术网

将SQL原始查询转换为Linq

将SQL原始查询转换为Linq,linq,sql-to-linq-conversion,Linq,Sql To Linq Conversion,我有3个表(活动、参与者和注册),我想知道每个参与者参与的活动数量。我是SQL Linq查询的新手,请帮助我将下面的查询转换为Linq Select count(Activities.ActivityId) AS NO_Activities,Activities.ActivityId,Enrollments.PostTestScore1 from Participants,Activities,Enrollments where Participants.ParticipantId=Enroll

我有3个表(活动、参与者和注册),我想知道每个参与者参与的活动数量。我是SQL Linq查询的新手,请帮助我将下面的查询转换为Linq

Select count(Activities.ActivityId) AS NO_Activities,Activities.ActivityId,Enrollments.PostTestScore1
from Participants,Activities,Enrollments
where Participants.ParticipantId=Enrollments.ParticipantId
    and Activities.ActivityId=Enrollments.ActivityId
    and Enrollments.ParticipantId= 2883
    Group By Enrollments.PostTestScore1,Activities.ActivityId;

谢谢

我使用Lambda查询找到了答案,如下所示

var no_ctivities = db.Activities
               .Join(
                   db.Enrollments,
                   ac => ac.ActivityId,
                   en => en.ActivityId,
                   (enr, act) => new { en = enr, ac = act })
               .Join(
                   db.Participants.Where(pr => pr.ParticipantId == id),
                   en => en.ac.ParticipantId,
                   prt => prt.ParticipantId,
                   (enr, prt) => new { enr.ac.PostTestScore1, enr.ac.PostTestScore2, enr.ac.ActivityId, enr.ac.AttendFirstday, enr.ac.AttendSecondDay })
               .Select(c => new
               {
                   c.ActivityId,
                   c.PostTestScore1,
                   c.PostTestScore2,
                   c.AttendFirstday,
                   c.AttendSecondDay
               }).count();

我使用Lambda查询找到了答案,如下所示

var no_ctivities = db.Activities
               .Join(
                   db.Enrollments,
                   ac => ac.ActivityId,
                   en => en.ActivityId,
                   (enr, act) => new { en = enr, ac = act })
               .Join(
                   db.Participants.Where(pr => pr.ParticipantId == id),
                   en => en.ac.ParticipantId,
                   prt => prt.ParticipantId,
                   (enr, prt) => new { enr.ac.PostTestScore1, enr.ac.PostTestScore2, enr.ac.ActivityId, enr.ac.AttendFirstday, enr.ac.AttendSecondDay })
               .Select(c => new
               {
                   c.ActivityId,
                   c.PostTestScore1,
                   c.PostTestScore2,
                   c.AttendFirstday,
                   c.AttendSecondDay
               }).count();

请不要只是发布SQL并要求转换。至少显示一个类模型,以便导航属性和关联的多样性可见。另外,告诉我们您针对的是哪种类型的LINQ(针对实体?),并展示您自己的第一次努力,以便我们了解您具体需要帮助的地方。最好的LINQ查询很少是SQL查询的1:1复制。请不要只是发布SQL并要求转换。至少显示一个类模型,以便导航属性和关联的多样性可见。另外,告诉我们您针对的是哪种类型的LINQ(针对实体?),并展示您自己的第一次努力,以便我们了解您具体需要帮助的地方。最好的LINQ查询很少是SQL查询的1:1复制。这是一个不同的查询。伯爵在哪里?另外,您应该使用导航属性,不使用连接。这是一个不同的查询。伯爵在哪里?另外,您应该使用导航属性,无连接。谢谢,这也帮助了我,但有一些小更改。我批准了更改感谢它也帮助了我,但有一些小更改。我批准了更改