如何将linq查询转换为人类可读的字符串

时间:2010-11-24 17:18:41

标签: .net linq debugging expression

如何将linq查询(或下面的表达式)翻译成人类可读的字符串?用于调试目的。

Expression<Func<User, bool>> query

修改

因为很难理解:我想从表达式中获取一个字符串。因此表达式的示例声明。

Expression<Func<User, bool>> query2 = 
   u => u.FirstName.StartsWith("J") && u.LastName == "Gauffin";

应该打印“FirstName以'J'开头,LastName等于'Gauffin'”;

2 个答案:

答案 0 :(得分:5)

提示: 如果您使用linq查询sql或实体框架,可以使用IQueryable对象上的ToString()方法在sql中获取查询:

query2.ToString()给出类似于:

的内容
SELECT * FROM Table1 WHERE FirstName LIKE 'J%' AND LastName="Gauffin"

答案 1 :(得分:1)

查看VS samples文件夹中的LINQ Expression Visualizer。

或者在LINQ to SQL中,您可以使用DataContext.Log

查看它

在Entity Framework中,您将LINQ查询转换为ObjectQuery并调用ToTraceString