2012-03-23 3 views
1

Я хочу преобразовать запрос SQL Server в LINQ. Задайте вопрос:SQL Query to LINQ conversion

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

+0

Не могли бы вы привести пример результат вашего запроса и, возможно, какие данные вы выбрали? – MarcinJuraszek

+0

Связанные: http://stackoverflow.com/questions/6160817/pivot-in-c-sharp-entity-framework-3-5 –

ответ

0

LINQ требует, чтобы все ваши столбцы были статически названы. Это означает, что вам нужно построить выражение запроса, используя отражение, которое является неприятным типом работы.

В некотором смысле отражение в .NET делает то же самое, что вы делаете при конкатенации строк в SQL - вы динамически создаете запрос, который должен иметь столбцы статически названные.

Я думаю, что вам лучше остаться с SQL для этой конкретной задачи.