2009-05-21 34 views

回答

2

一切都是可能的,它只是需要工作的卡車。問題在於你首先必須解析SQL查詢,並解釋AST將其轉換爲linq表達式樹。這並不是微不足道的,因爲Linq與sql不是1:1兼容:例如,在linq中,groupby上的聚合是groupby外部的,而在SQL中它們是內部的:它們必須位於相同的範圍內作爲團隊,否則他們將無法工作。這種信息是將linq查詢轉換爲SQL查詢所需的,但也是相反的。

因此,爲了存儲查詢,我選擇了不同的路線,例如,一個規範模式

1

我不認爲LINQ-to-SQL中內置了任何東西。

理論上我敢說這是可能的(雖然它不能保證往返,因爲表達同一個查詢有不同的方式) - 但很難做得很好。

0

什麼可能會幫助你 - LINQPad。我想,它不能將SQL轉換爲LINQ查詢,但它可以將LINQ轉換爲SQL。

一種選擇是從SQL生成的IL代碼中進行跟蹤。例如:

SELECT TOP (50) [t0].[Id], [t0].[tralala] 
FROM [pamparam] AS [t0] 

生成:

IL_0001: ldarg.0  
IL_0002: call  LINQPad.User.TypedDataContext.get_pamparam 
IL_0007: ldc.i4.s 32 
IL_0009: call  System.Linq.Queryable.Take 
IL_000E: call  LINQPad.Extensions.Dump 

這種方式是很明顯的,那LINQ查詢看起來像:

pamparam.Take (50) 
+0

哦d * mn ...問題是 - 如果有可能以編程方式執行此操作。 :/ – 2009-05-21 07:26:17