如何重写SQL查询到LINQ

时间:2012-07-02 13:36:53

标签: .net linq entity-framework

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

查询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

2 个答案:

答案 0 :(得分: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的示例,其中显示了如何连接到Entity Framework以及如何编写一些查询。请注意,有可用的样品。另请注意,我写了几个可以帮助您查询的快速查询。

enter image description here

答案 1 :(得分:1)

有关返回多个结果集的SP的MSDN文章。谷歌第一。

LINQ to SQL: returning multiple result sets