获取LINQ查询的查询语法

时间:2010-01-12 19:45:24

标签: linq

我有一个linq查询,我想获得。

的查询语法
var q = customers.Where(x => x.name == "smith");

是否有像IQueryable.ToQuerySyntaxString()这样的东西?会返回这样的东西:

  

来自cust的客户凡cust.name   ==“史密斯”;

我问,因为我可以使用方法语法构建我的查询,但希望查看相同的查询语法,以帮助我学习如何以替代形式编写。

3 个答案:

答案 0 :(得分:1)

它实际上是相反的。当您使用第二种语法(from x in y where w)时,它实际上被编译为第一种语法(y.Where(x => w))。

我确信你可以使用Expression Trees编写一些东西来制作第二个版本,但是我不知道框架中会自动为你做任何事情。

答案 1 :(得分:0)

从relinq.codeplex.com尝试re-linq

new QueryParser ().GetParsedQuery (q.Expression).ToString()

会给你这个。

答案 2 :(得分:0)

Resharper通常允许你这样做。它可以建议从for / foreach转换为LINQ以及LINQ转换回循环(后者请参见http://www.jetbrains.com/resharper/whatsnew/whatsnew_60.html#LINQtoLoops),以及查询语法中的LINQ方法链。