我是LINQ的新手,我想檢查TEXT列是否爲空或空(如String.IsNullOrEmpty)。如何使用LINQ To Entities檢查SQL Server 2005 TEXT列是否爲空或空?
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並不適用於文本列。我知道DATALENGTH應該用於他們...
我該如何強制LINQ生產這樣的東西?或者任何其他解決方法來測試文本列是否爲空或空?
謝謝!
更新
我想出了這個
HasBio = c.bio.Substring(0, 1).Length > 0
,但它是一個有點難看不過,任何其他的選擇嗎?
爲什麼使用TEXT數據類型與SQL Server 2005,而不是VARCHAR(MAX)? – LukLed 2010-05-05 22:47:31
因爲我繼承了這個應用程序,並且它在八年前使用SQLServer2000進行了8。如果它很容易做到,我可能會考慮將TEXT列轉換爲VARCHAR(MAX)。 – emzero 2010-05-06 02:22:47
這很容易做到,上週我只做了一次轉換。如果它確實是一個文本字段,那麼沒有理由不這樣做。 – egrunin 2010-05-06 17:31:33