此代码在SQL Server Management Studio中运行良好:
SELECT [PassNumber] FROM [dbo].[Customers] WHERE [PassNumber] <> 'A'
此代码也按预期工作:
string query = "PassNumber <> 'A'";
DbSqlQuery<Customer> data = db.Customers.SqlQuery( string.Format("select * from customers where {0}", query) );
现在更改为排除空行,此代码在SSMS上正常工作:
SELECT [PassNumber] FROM [Customers] WHERE [PassNumber] <> ''
但我找不到正确格式化查询字符串的方法。我已经尝试了所有可能的组合,但是代码抛出异常:“关键字'&lt;&gt;'附近的语法不正确。”
string query = "PassNumber <> '' ";
DbSqlQuery<Customer> data = db.Customers.SqlQuery( string.Format("select * from customers where {0}", query) );
注意:为简单起见,问题中的示例中没有检查空值。
答案 0 :(得分:1)
在LINQ
查询时,为什么不使用EF
。然后一切都会变得更容易:
var customerList = db.Customers.Where(c => c.PassNumber == string.Empty).ToList();
答案 1 :(得分:0)
您是否尝试过使用
is null
关于SQL的子句?
或is not null
答案 2 :(得分:0)
如果您坚持使用原始SQL执行此操作,则应使用:
db.Customers.SqlQuery("select * from customers where PassNumber <> @p0, string.Empty);
或
db.Customers.SqlQuery("select * from customers where LEN(PassNumber) > 0);