-3

这是我的 MS SQL 查询(我将其用作存储过程)。我是 LINQ 的新手。我正在使用 .NET 框架 4.0 和实体框架。

查询 1

 SELECT SUM(PTS.Run1)AS Run1,SUM(PTS.Run2)AS Run2,
 SUM(PTS.Run3)AS Run3,SUM(PTS.Run4)AS Run4,SUM(PTS.Run6)AS Run6
,SUM(PTS.BallsFaced)AS BallsFaced 
     FROM PlayerTeamSeason PTS
     INNER JOIN Player P ON P.ID=PTS.PlayerId 
WHERE P.CrewId =89 and PTS.SeasonId=1

编辑 1

我需要解决方案

  • MAX 值和 JOIN(请参考查询 1)

编辑 2

  from crew in Oritia_entities.Crews
       join P in Oritia_entities.Players on crew.ID equals P.CrewId
                                  //select new { P.ID, P.Matches };
       join PTS in Oritia_entities.PlayerTeamSeasons on P.ID equals PTS.PlayerId
        select new
       {
          TotalRuns = PTS.Run1 + PTS.Run2 + PTS.Run3 + PTS.Run4 + PTS.Run6
            ,
          Bowls = PTS.BallsFaced
                                  };

我已将查询重新写入 LINQ。但是我怎么能在这里使用 SUM。正如我在我的 sql 查询中所写

谢谢

VeeKeyBee

4

2 回答 2

2

首先,跑——不要走——到LINQPad.net并给自己弄一份 LINQPad。此外,我建议您花 58 美元购买自动完成的高级版。

有一些快速教程以及大量示例代码可以真正帮助您开始查找等效的 LINQ 命令。

这是一个非常易于使用的程序,可让您快速运行和试验 LINQ,包括实际查询您的数据库。它还允许您运行代码甚至 SQL 查询,这对您的情况很有帮助,因为您可以在一个选项卡中打开 SQL 查询,同时在另一个选项卡中处理相应的 LINQ 查询。

其次,我在你的情况下开始的方式是输出。运行您的查询,查看输出是什么,然后尝试从中开发您的 LINQ 查询。我不认为尝试转换实际的 SQL 查询是最简单的方法,但它仍然可以为您提供一些指导。

您会发现 LINQ 实际上与 SQL 非常相似,并且第一种考虑它的方式是它是 SQL 的倒退。例如,select出现在 LINQ 的末尾。实际上,一旦您使用 LINQ 一段时间,您就会发现它是真正倒退的 SQL。

让我从一些帮助开始:

SELECT @playerID= ID  FROM Player WHERE crewid=@playerID 

在 LINQ 中:

int playerID = 1234;
var result = from player in Player
             where player.crewid == playerID
             select player.ID

由于这是 EF,您可能会在 Player 前面拥有数据库上下文,但至少在 LINQPad 中(通过程序中的 EF 连接),您可以在将查询转移到生产代码之前开发查询。

这是一个使用 LinqPad 的示例,展示了如何连接到实体框架以及如何编写一些查询。请注意,有可用的样品。另请注意,我写了几个快速查询,可能会对您的查询有所帮助。

在此处输入图像描述

于 2012-07-02T14:10:21.873 回答
1

MSDN for SP 上返回多个结果集的文章。先谷歌。

LINQ to SQL:返回多个结果集

于 2012-07-02T14:23:49.740 回答