将SQL原始查询转换为Linq
我有3个表(活动、参与者和注册),我想知道每个参与者参与的活动数量。我是SQL Linq查询的新手,请帮助我将下面的查询转换为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
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复制。这是一个不同的查询。伯爵在哪里?另外,您应该使用导航属性,不使用连接。这是一个不同的查询。伯爵在哪里?另外,您应该使用导航属性,无连接。谢谢,这也帮助了我,但有一些小更改。我批准了更改感谢它也帮助了我,但有一些小更改。我批准了更改