Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用LINQtoEntities检查SQLServer2005文本列是否为null或空?_Linq_Sql Server 2005_Text_Linq To Entities - Fatal编程技术网

如何使用LINQtoEntities检查SQLServer2005文本列是否为null或空?

如何使用LINQtoEntities检查SQLServer2005文本列是否为null或空?,linq,sql-server-2005,text,linq-to-entities,Linq,Sql Server 2005,Text,Linq To Entities,我是LINQ新手,我正在尝试检查文本列是null还是空(如String.IsNullOrEmpty) 尝试使用上述查询会生成SqlException: Argument data type text is invalid for argument 1 of len function. 生成的SQL类似于以下内容: CASE WHEN ( NOT (([Extent2].[bio] IS NULL) OR (( CAST(LEN([Extent2].[bio]) AS int)) = 0)))

我是LINQ新手,我正在尝试检查文本列是null还是空(如String.IsNullOrEmpty)

尝试使用上述查询会生成SqlException:

Argument data type text is invalid for argument 1 of len function.
生成的SQL类似于以下内容:

CASE WHEN ( NOT (([Extent2].[bio] IS NULL) OR (( CAST(LEN([Extent2].[bio]) AS int)) = 0))) THEN cast(1 as bit) WHEN (([Extent2].[bio] IS NULL) OR (( CAST(LEN([Extent2].[bio]) AS int)) = 0)) THEN cast(0 as bit) END AS [C1]
LEN不适用于文本列。我知道数据长度应该用于他们

我怎样才能强迫LINQ生产这样的产品?或任何其他解决方法来测试文本列是否为空???

谢谢

更新

我想到了这个

HasBio = c.bio.Substring(0, 1).Length > 0

但是它有点难看,还有其他选择吗?

考虑到下面的文章,我决定将文本列转换为VARCHAR(MAX)


为什么在SQL SERVER 2005中使用文本数据类型而不是VARCHAR(MAX)?因为我继承了该应用程序,并且它是8年前使用SQLServer2000创建的。我可能会考虑把文本列转换成VARCHAR(max),如果它很容易做。它很容易做到,只是上周做了一个转换。如果它真的是一个文本字段,没有理由不这样做。
HasBio = c.bio.Substring(0, 1).Length > 0
powerCircuitList.Where(t => t.textProperty!= null && t.textProperty!= "")