Я использую LINQ to ENTITIES для извлечения данных из SQL Server, и я пытаюсь получить только первые 255 символов из одного из столбцов, тип данных которых NTEXT
. Когда я пытаюсь получить ошибку:
Тип аргумента ntext недопустим для аргумента 1 функции len
Код, создающий ошибку:
Subject = (yt.Message.Length > 255) ? yt.Message.Substring(0, 255) : yt.Message
Есть ли простой способ получить длину, чтобы я мог ее проверить или просто получить первые 255 символов столбца NTEXT
?
Попытка выполнить yt.Message.ToString().Length
дает ту же ошибку.
Это сторонний БД для программного обеспечения форума, которое я использую, и поскольку я ничего не знаю о том, как работает эта система, я хочу держаться подальше от изменения какой-либо схемы.
Не похоже, что есть способ сделать это в LINQ, но то, что я закончил, это создать обычный запрос LINQ, чтобы вытащить все данные, а затем поместить метод в ViewModel, который возвращает количество символов, которые я хочу.
public string Subject
{
get
{
return (yt.Message.Length > 255) ? yt.Message.Substring(0, 255) : yt.Message
}
}
Вам нужно использовать представление.
CREATE VIEW MyView
AS
SELECT MyKey,
LEFT(CONVERT(NVARCHAR(MAX), MyValue), 255) AS MyValueSummary
FROM dbo.MyTable
ToString
?