Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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
在Linq复合体中使用GroupBy_Linq - Fatal编程技术网

在Linq复合体中使用GroupBy

在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

这是我的桌子结构

表1-玩家

  • PlayerID
  • 名字
  • 姓氏
  • 电子邮件地址
  • 塞尔诺
表2-团队

  • TeamID
  • 团队名称
表3-团队成员

  • 身份证
  • PlayerID
  • TeamID
一名球员可以是多支球队的一员。 问题: 现在我想得到球员的基本细节以及他所效力球队的数量。我使用以下查询在SQL中获取结果:

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();