2009-05-21 59 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