将空字符串传递给 EF6
本文关键字:EF6 字符串 | 更新日期: 2023-09-27 18:33:19
此代码在 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] <> ''
但是我找不到正确格式化查询字符串的方法。我已经尝试了我想到的所有可能的组合,但代码抛出了一个异常:"关键字'<>'附近的语法不正确。
string query = "PassNumber <> '' ";
DbSqlQuery<Customer> data = db.Customers.SqlQuery( string.Format("select * from customers where {0}", query) );
注意:为简单起见,检查空值已排除在问题的示例之外。
在EF
中查询时为什么不使用LINQ
。那么一切都可能更容易:
var customerList = db.Customers.Where(c => c.PassNumber == string.Empty).ToList();
如果你坚持使用原始SQL来做到这一点,你应该使用:
db.Customers.SqlQuery("select * from customers where PassNumber <> @p0, string.Empty);
或
db.Customers.SqlQuery("select * from customers where LEN(PassNumber) > 0);
你试过使用
is null
关于 SQL 的条款?或者is not null