如何使用LINQtoEntities检查SQLServer2005文本列是否为null或空?
我是LINQ新手,我正在尝试检查文本列是null还是空(如String.IsNullOrEmpty) 尝试使用上述查询会生成SqlException:如何使用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)))
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!= "")