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

y3bcpkx1  于 2023-09-28  发布在  SQL Server
关注(0)|答案(2)|浏览(133)

我是刚接触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列。我知道数据长度应该用于他们……

我怎样才能强制LINQ生成这样的东西?或其他测试文本列是否为null或空的解决方法???

谢谢你,谢谢

更新

我想出了这个

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

但有点难看还有别的选择吗

wydwbb8l

wydwbb8l1#

好吧,我决定将TEXT列转换为VARCHAR(MAX),记住下面的文章。
Link

hwamh0ep

hwamh0ep2#

powerCircuitList.Where(t => t.textProperty!= null && t.textProperty!= "")

相关问题