繁体   English   中英

将空字符串传递给EF6

[英]Passing empty string to EF6

这段代码可以在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();

您是否尝试过使用

is null

SQL子句? is not null

如果您坚持通过原始SQL来执行此操作,则应使用:

db.Customers.SqlQuery("select * from customers where PassNumber <> @p0, string.Empty);

要么

db.Customers.SqlQuery("select * from customers where LEN(PassNumber) > 0);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM