Linq空字符串与空格

时间:2013-02-08 11:53:28

标签: linq sql-server-2008 linq-to-sql

我有一个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 Empty String Vs Space

我想修改我的Linq查询。我怎样才能做到这一点?不使用linq中的SQL Server T-SQL命令。

1 个答案:

答案 0 :(得分:2)

如果您使用的是Entity Framework,请使用SqlFunctions.DataLength来区分空字符串和空白区域。

e.g

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函数将在修剪任何尾随空白区域后为您提供字符数。