是否有一个工具可以显示在C#中实际编译的LINQ查询?

时间:2017-04-01 22:30:28

标签: c# linq

在C#中,可以用所谓的"查询语法"来构造LINQ查询,例如:

var namesOfGoodStudents = from student in students
                          where student.score > 90
                          select student.name;

根据文件记载,这实际上是语法糖,它已经扩展了#34; /"编译" /"脱糖"以下"方法语法":

var namesOfGoodStugents = students
                          .Where(student => student.score > 90)
                          .Select(student => student.name);

这是一个非常直截了当的例子,但我有时遇到更复杂的案例,有多个fromgrouplet条款,其中不清楚(至我,至少)究竟是什么查询实际上被翻译成了。

是否有可以使用的公开工具,其中一个提供查询语法LINQ查询,然后显示查询的翻译,去糖,方法语法版本是什么?

澄清I:我对扩展一个具体的例子并不感兴趣,但是在我遇到一个工具时我能够使用它。

澄清II:我可以手动跟踪自己的转换算法的详细描述,以便将任何查询语法LINQ查询转换为方法语法也将被视为一个很好的答案: - )< / p>

修改 感谢您可能的重复参考。接受的答案是(目前至少)LINQPad,除了比我想要的重得多之外,对我来说不起作用,因为它只是Windows。理想情况下,我喜欢在线工具,或者如果找不到,那么至少可以使用跨平台工作的东西。 实际上其他答案在某种程度上证明对我有用,但我希望有更好的东西:我的理解是将查询语法转换为方法语法是一种纯粹的语法转换,人们应该能够在没有实际编译的情况下执行运行程序(编译器将作为编译的一部分,因此当然不应该编译和运行以便能够执行此操作),而无需提供实际的类型和变量。我正在寻找可以处理查询本身的东西,不需要进一步的上下文(例如,在上面的示例中,只进行只有查询作为输入的翻译,不需要[假设] Student类和students变量。)

0 个答案:

没有答案