2010-11-24 72 views
1

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

Expression<Func<User, bool>> query 

编辑

由于这是很难理解:我想从表达的字符串。因此表达式的示例声明。

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

应该打印类似“名字首字母'J'和姓氏等于'高弗'的东西。

+1

这只是一个声明,因此,有没有查询,那么你想“翻译”成一个人类可读的字符串? – 2010-11-24 17:30:26

+0

有一些想象力。对于你没有它的人:更新的问题。 – jgauffin 2010-11-24 18:52:16

回答

5

提示: 如果你使用LINQ to SQL或实体框架,你可以使用toString()方法的IQueryable对象上得到的SQL查询中查询:

query2.ToString()给出这样的:

SELECT * FROM Table1 WHERE FirstName LIKE 'J%' AND LastName="Gauffin" 
1

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

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

实体框架中看到它,你投的LINQ查询到的ObjectQuery并调用ToTraceString