2013-04-13 60 views
0

我在T-SQL查詢中有以下代碼,我需要將其轉換(重寫)爲LINQ。有人能幫助我嗎?由於如何將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 
+3

告訴我們[你***已經嘗試過的東西](http://www.whathaveyoutried.com) - 你卡在哪裏? –

+0

你看過http://www.sqltolinq.com/downloads嗎? –

+0

我試過linquer,但該軟件不支持一些像datediff功能,所以它不能轉換此代碼 –

回答

0

這應該工作,但我不能嘗試,因爲我沒有在家裏的任何編程工具,可以隨意讓我知道,如果這行不通,我們可以一起提高它

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); 
+0

新{cinnostsopidsop我想這裏會有一些問題,我可以在哪裏得到它? –

+0

應該沒問題,新{cinnostsopidsop = g.Key}正在創建一個名爲cinnostsopidsop的屬性的匿名對象,它的值是組的密鑰。當我們由pz.cinnostsopidsop分組時,該組的關鍵將是cinnostsopidsop。如果你不太確定這個語法是如何工作的,只需google'匿名對象' –

+0

也許我應該給它一個新的名字,以免混淆。檢查答案。 –