У меня недавно возникла эта проблема. Я хранил сообщение «статус» в поле базы данных nvarcharMAX, которое составляет 4000 символов. Однако мои статусные сообщения накапливались и вызывали исключение.
Но это был непростой случай усечения, так как произвольное усечение лишило бы часть сообщения статуса, поэтому мне действительно нужно было «усечь» согласованную часть строки.
Я решил проблему, преобразовав строку в массив строк, удалив первый элемент, а затем восстановив строку. Вот код («CurrentStatus» - это строка, содержащая данные) ...
if (CurrentStatus.Length >= 3750)
{
string[] statusArray = CurrentStatus.Split(new string[] { "." }, StringSplitOptions.None)
.Skip(1).ToArray();
CurrentStatus = (string.Join(".", statusArray))
.Replace("\\r\\n", Environment.NewLine);
}
Надеюсь, это кому-то поможет.