2012-03-23 257 views
1

我想將我的SQL Server查詢轉換爲LINQ。查詢是:SQL查詢到LINQ轉換

DECLARE @Cols VARCHAR(MAX) 
SELECT @cols = '[24/03/2012],[23/03/2012],[22/03/2012]' 
DECLARE @query VARCHAR(MAX) 
SET @query = N'SELECT * 
FROM 
(SELECT ''Total Processed'' as [Total Processed], CONVERT(VARCHAR,datestatuschanged,103) AS ''DATE'',applicationid 
      FROM dbo.vwProductivityRpt 
      where status=''Open'') p 
PIVOT 
(
count(applicationid) FOR DATE IN 
('+ 
@cols +') 
) AS pvt' 

EXECUTE(@query) 
+1

第一個問題是,爲什麼?你正在使用特定於SQL的功能,比如'CONVERT('和'PIVOT'),這些將很難在LINQ中複製。你的業務流程是否以某種需要LINQ而不是SQL的方式從根本上打破了? – mellamokb 2012-03-23 19:24:12

+0

你能否給我們一個例子你的查詢結果,也許你選擇什麼數據? – MarcinJuraszek 2012-03-23 19:25:37

+0

相關:http://stackoverflow.com/questions/6160817/pivot-in-c-sharp-entity-framework-3-5 – 2012-03-23 21:58:34

回答

0

LINQ要求您的所有列都是靜態命名的。這意味着您需要使用反射來構建查詢表達式,這是一種令人討厭的工作類型。

從某種意義上說,.NET中的反射與SQL中的字符串連接所做的相同 - 您可以動態創建一個必須具有靜態命名列的查詢。

我覺得你最好還是用SQL來完成這個特定的任務。