我是 LINQ 新手,我正在尝试检查 TEXT 列是否为 null 或为空(如 String.IsNullOrEmpty)。
from c in ...
...
select new
{
c.Id,
HasBio = !String.IsNullOrEmpty(c.bio)
}
尝试使用上述查询会产生 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 不适用于 TEXT 列。我知道应该对它们使用 DATALENGTH...
如何强制 LINQ 生成这样的东西?或者任何其他解决方法来测试文本列是否为空或空???
谢谢!
更新
我想出了这个
HasBio = c.bio.Substring(0, 1).Length > 0
但是有点难看,还有其他选择吗?
考虑到以下文章,我决定将 TEXT 列转换为 VARCHAR(MAX)。
powerCircuitList.Where(t => t.textProperty!= null && t.textProperty!= "")