gpt4 book ai didi

LINQ to Entities 三表连接查询

转载 作者:行者123 更新时间:2023-12-02 11:49:19 26 4
gpt4 key购买 nike

我在 Linq to Entities 中的查询遇到了一些麻烦,我希望有人能够阐明这个问题:-) 我想做的是创建一个连接三个表的查询。

到目前为止,它有效,但由于我尝试连接的最后一个表是空的,因此查询结果不包含任何记录。当我删除最后一个连接时,它给出了正确的结果。

我的查询如下所示:

var query = from p in db.QuizParticipants
join points in db.ParticipantPoints on p.id
equals points.participantId into participantsGroup
from po in participantsGroup
join winners in db.Winners on p.id
equals winners.participantId into winnersGroup
from w in winnersGroup
where p.hasAttended == 1 && p.weeknumber == weeknumber
select new
{
ParticipantId = p.id,
HasAttended = p.hasAttended,
Weeknumber = p.weeknumber,
UmbracoMemberId = p.umbMemberId,
Points = po.points,
HasWonFirstPrize = w.hasWonFirstPrize,
HasWonVoucher = w.hasWonVoucher
};

我想要的是获取一些记录,即使 Winners 表为空或其中没有匹配项。

对此的任何帮助/提示都非常感谢! :-)

提前非常感谢。

/博

最佳答案

如果您将它们设置为相关实体而不是进行联接,我认为您想做的事情会更容易。

var query = from p in db.QuizParticipants
where p.hasAttended == 1 && p.weeknumber == weeknumber
select new
{
ParticipantId = p.id,
HasAttended = p.hasAttended,
Weeknumber = p.weeknumber,
UmbracoMemberId = p.umbMemberId,
Points = p.ParticipantPoints.Sum(pts => pts.points),
HasWonFirstPrize = p.Winners.Any(w => w.hasWonFirstPrize),
HasWonVoucher = p.Winners.Any(w => w.hasWonVoucher)
};

假设 hasWonFirstPrizehasWonVoucher 是 bool 字段,但您可以使用任何聚合函数来获取所需的结果,例如 p.Winners。任何(w => w.hasWonFirstPrize == 1)

关于LINQ to Entities 三表连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8885321/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com