将空字符串传递给 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) );

注意:为简单起见,检查空值已排除在问题的示例之外。

将空字符串传递给 EF6

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