如何使用 LINQ To Entities 检查 SQL Server 2005 TEXT 列是否不为 Null 或空?

问题描述 投票:0回答:2

我是 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

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

linq sql-server-2005 text linq-to-entities
2个回答
1
投票

考虑到以下文章,我决定将 TEXT 列转换为 VARCHAR(MAX)。

链接


0
投票
powerCircuitList.Where(t => t.textProperty!= null && t.textProperty!= "")
© www.soinside.com 2019 - 2024. All rights reserved.