如何将T-SQL转换为LINQ

如何将T-SQL转换为LINQ,sql,sql-server,linq,tsql,Sql,Sql Server,Linq,Tsql,在T-SQL查询中有以下代码,我需要将其转换为LINQ。有人能帮我吗?谢谢 SELECT (select max(X.PocetDniPoPlatnosti) from ( select (select top 1 datediff(day,datumplatnosti,getdate()) from planrealizace p where p.cinnostsopidsop = cinnostsop.idsop and datumplatnosti <= getdate()

在T-SQL查询中有以下代码,我需要将其转换为LINQ。有人能帮我吗?谢谢

SELECT (select max(X.PocetDniPoPlatnosti) 
from
(

select 

(select top 1 datediff(day,datumplatnosti,getdate()) from planrealizace p 
where p.cinnostsopidsop = cinnostsop.idsop and datumplatnosti <= getdate() and p.provest = 1 and p.datumprovedeni is null
order by p.datumplatnosti desc) as PocetDniPoPlatnosti

from cinnostsop
where cinnostSOP.LegislativneVyznamna = 1 and (CinnostSOP.ObjektId = 131476)) X) as PoPlatnosti

这应该行得通,但我不能尝试,因为我家里没有任何编程工具,所以如果不行,请随时告诉我,我们可以一起改进

var max = (from cp in cinnostsop.Where(c => c.LegislativneVyznamna = 1 && c.ObjektId = 131476) 
           join p in (
               planrealizace.
               Where(pz => pz.datumplatnosti <= DateTime.Now && 
                           pz.provest = 1 and pz.datumprovedeni is null).
               GroupBy(pz => pz.cinnostsopidsop, pz => pz).
               Select(g => 
                   new { 
                           id = g.Key, 
                           firstdate = (g.OrderByDescending(
                                              pz => pz.datumplatnosti).
                                          First().datumplatnosti - DateTime.Now
                                        ).Totaldays
                        })
               ) on cp.idsop equals p.id
           select p.firstdate).Max(d => d);

告诉我们-你在哪里卡住了?你看了吗?我试过linquer,但该软件不支持datediff这样的函数,所以它无法转换此代码new{CinnostOpidsop我想这里会有一些问题,我在哪里可以得到它?应该可以,new{CinnostOpidsop=g.Key}正在创建一个匿名对象,该对象的属性名为cinnossopidsop,它的值是组的键。当我们使用pz.cinnossopidsop进行分组时,组的键将是cinnossopidsop。如果您不太确定此语法如何工作,只需谷歌“anonymous object”,也许我应该给它一个新名称,这样它就不会混淆。请检查答案.