2012-01-25 37 views
1

我有一個合理長的SQL查詢,我需要在.Net應用程序中運行。我可以使它成爲一個存儲過程,但我希望儘可能避免它(因爲我可能在此應用程序中有大量的查詢)。這可以轉換爲LINQ嗎?

考慮到這一點,是否可以像下面的東西轉換爲LINQ或者它是否太詳細?

-- Compare current period to historical data 
select Name , 
     avg(TimeProcessing + TimeRendering + TimeDataRetrieval)/1000 as 'Current Month' , 
     isnull(count(TimeProcessing), 0)        as 'Sample' , 
     min(l2.[Avg_Exec_Time_Previous_Month])       as 'Previous Month' , 
     isnull(min(l2.[Executions_Last_Month]), 0)      as 'Sample' , 
     min(l3.[Avg_Exec_Time_Two_Months_Ago])       as 'Two Months ago' , 
     isnull(min(l3.[Executions_Two_Months_Ago]), 0)     as 'Sample' 
from marlin.report_execution_log l 
     inner join marlin.report_catalog c on l.ReportID = c.ItemID 
     left outer join ( 
         select  
          l2.ReportID , 
          (
          avg(l2.TimeProcessing + l2.TimeRendering 
          + l2.TimeDataRetrieval)/1000 
          ) as 'Avg_Exec_Time_Previous_Month' , 
          count(l2.TimeProcessing) as 'Executions_Last_Month' 
         from  
          marlin.report_execution_log l2 
         where 
          TimeEnd between dateadd(MONTH, -2, getdate()) 
            and  dateadd(MONTH, -1, getdate()) 
         group by 
          l2.ReportID 
         ) l2 on l.ReportID = l2.ReportID 
     left outer join ( 
         select  
          l3.ReportID , 
          (
          avg(l3.TimeProcessing + l3.TimeRendering + l3.TimeDataRetrieval)/1000 
          ) as 'Avg_Exec_Time_Two_Months_Ago' , 
          count(l3.TimeProcessing) as 'Executions_Two_Months_Ago' 
         from 
          marlin.report_execution_log l3 
         where 
          TimeEnd between dateadd(MONTH, -3, getdate()) 
            and  dateadd(MONTH, -2, getdate()) 
         group by 
          l3.ReportID 
         ) l3 on l.ReportID = l3.ReportID 
group by l.ReportID , 
      Name 
order by 2 desc 
+5

沒有什麼讓我傷心的是,當我看到那麼多的計算和邏輯的存儲過程。 – hunter

+0

你是要求使用一些轉換器還是? –

+2

答案是肯定的,你可以把它轉換成Linq ......但問題是它是否值得...顯然,這個過程很難維持,但如果它工作,並以最有效的方式,並且如果說查詢性能很重要,那麼你很可能不會改善這方面的代碼... – Reddog

回答

3

有許多工具/轉換器可在互聯網上。您可以使用此工具

相關問題