我是刚接触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
但有点难看还有别的选择吗
2条答案
按热度按时间wydwbb8l1#
好吧,我决定将TEXT列转换为VARCHAR(MAX),记住下面的文章。
Link
hwamh0ep2#