Я новичок в 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
но это немного некрасиво, есть ли другие варианты?