Как проверить, является ли столбец TEXT в SQL Server 2005 пустым или пустым с помощью LINQ To Entities? - PullRequest
2 голосов
/ 05 мая 2010

Я новичок в LINQ и пытаюсь проверить, является ли столбец TEXT пустым или пустым (как 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

но это немного некрасиво, есть ли другие варианты?

Ответы [ 2 ]

1 голос
/ 07 мая 2010

Я решил преобразовать столбцы TEXT в VARCHAR (MAX), учитывая следующую статью.

http://geekswithblogs.net/johnsPerfBlog/archive/2008/04/16/ntext-vs-nvarcharmax-in-sql-2005.aspx

0 голосов
/ 19 ноября 2011
powerCircuitList.Where(t => t.textProperty!= null && t.textProperty!= "")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...