1

我有一个 linq 查询

var x = c from context.customers
where c.Name == ''

var x =  c from context.customers
where c.Name == ' '

我在 SQL 2008 数据库中有一个 customername 列,带有 varchar(50),一个客户是空白的,另一个有一个空格,但是 Linq 生成的 TSQL 是正确的,但是两个查询的返回都返回了两个客户,而不是我想要的 1 条记录,这是空白或有空格。根据这个问题,我知道根本问题是 SQL 服务器问题。

SQL Server 2008 空字符串与空格

我想修改我的 Linq 查询。我怎样才能做到这一点?无需在 linq 中使用 SQL 服务器 T-SQL 命令。

4

1 回答 1

2

如果您使用的是实体框架,则使用SqlFunctions.DataLength来区分空字符串和空格。

例如

var x = c from context.customers
where c.Name == '' && SqlFunctions.DataLength(c.Name) == 0

var x = c from context.customers
where c.Name == '' && SqlFunctions.DataLength(c.Name) != 0

SqlFunctions.DataLength 转换为 TSQL DATALENGTH函数。DATALENGTH 将为您提供字符串所需的字节数,包括任何空格。相比之下,LEN 函数将为您提供修剪任何尾随空格后的字符数。

于 2013-02-08T12:34:33.177 回答