2012-08-07 158 views
-2

这里的lambda表达式,我想将其转换为SQL Server查询语法。如何将Lambda表达式转换为SQL Server查询语法?

{x => ((True AndAlso x.Name.ToLower().Contains("_")) AndAlso Not(x.IsDeleted))} 

注:lambda表达式等同于Sql服务器的Where子句。 我想将其转换为sql语法,然后将其传递给sql server存储过程。 有什么办法可以做到这一点?

+1

“真”,“AndAlso”和“不是”都是Visual Basic中的关键字,你为什么要用C#-4.0标记这个问题? – 2012-08-07 19:25:23

+0

你为什么要把它转换成T-SQL?你正在使用linq-to-sql还是你正在使用t-sql?我建议试着了解什么是需要在SQL服务器(t-sql)中查询而不是“转换”的东西。 – 2012-08-07 19:26:50

回答

2

通常,您可以使用LINQ语句返回的IQueryable对象上的ToString方法来查找将在数据库上执行的确切查询。但是,在这种情况下,我猜这样的事情可能会为WHERE产生:

WHERE CONTAINS(Name, '_') AND NOT IsDeleted 

但是,你有没有提供,让我验证,任何细节。

如果你没有对全文,那么下面可能更适用:

WHERE Name like '%_%' AND NOT IsDeleted 
+0

可能要提及'CONTAINS'需要全文搜索。 – 2012-08-08 16:04:32