在Linq复合体中使用GroupBy
这是我的桌子结构 表1-玩家在Linq复合体中使用GroupBy,linq,Linq,这是我的桌子结构 表1-玩家 PlayerID 名字 姓氏 电子邮件地址 塞尔诺 表2-团队 TeamID 团队名称 表3-团队成员 身份证 PlayerID TeamID 一名球员可以是多支球队的一员。 问题: 现在我想得到球员的基本细节以及他所效力球队的数量。我使用以下查询在SQL中获取结果: SELECT P.FirstName, P.LastName, P.EmailAddress, P.CellNo, COUNT(TP.TeamID) FROM Player P JOI
- PlayerID
- 名字
- 姓氏
- 电子邮件地址
- 塞尔诺
- TeamID
- 团队名称
- 身份证
- PlayerID
- TeamID
SELECT P.FirstName, P.LastName, P.EmailAddress, P.CellNo, COUNT(TP.TeamID)
FROM Player P
JOIN TeamPlayer TP ON P.PlayerID = TP.PlayerID
GROUP BY P.PlayerID, P.FirstName, P.Lastname, P.EmailAddress, P.CellNo;
这很好用
然而,当我把它转换成linq时,我被卡住了。在线资源提供的帮助不多。有人能帮我吗?数据库上下文
dbContext.Players
和dbContext.TeamPlayers
只是代表性的,请检查您的项目是否有正确的上下文
var result= (from player in dbContext.Players
join teamPlayer in dbContext.TeamPlayers
on player.PlayerID equals teamPlayer.PlayerID
select new{player,teamPlayer})
.GroupBy(P=>new
{
P.PlayerID,
P.FirstName,
P.Lastname,
P.EmailAddress,
P.CellNo
})
.Select(x=>new
{
x.Key.FirstName,
x.Key.LastName,
x.Key.EmailAddress,
x.Key.CellNo,
TeamIDCount=x.Count(z=>z.teamPlayer.TeamID)
}).ToList();