У меня недавно была эта проблема.Я сохранял сообщение «status» в поле базы данных nvarcharMAX, которое составляет 4000 символов.Однако мои сообщения о состоянии накапливались и попадали в исключение.
Но это был не простой случай усечения, поскольку произвольное усечение могло бы привести к потере части сообщения о состоянии, поэтому мне действительно нужно было «усечь» согласованную часть строки.
Я решил проблему, преобразовав строку в массив строк, удалив первый элемент, а затем восстановив строку.Вот код («CurrentStatus» - строка, содержащая данные) ...
if (CurrentStatus.Length >= 3750)
{
// perform some truncation to free up some space.
// Lets get the status messages into an array for processing...
// We use the period as the delimiter, then skip the first item and re-insert into an array.
string[] statusArray = CurrentStatus.Split(new string[] { "." }, StringSplitOptions.None)
.Skip(1).ToArray();
// Next we return the data to a string and replace any escaped returns with proper one.
CurrentStatus = (string.Join(".", statusArray))
.Replace("\\r\\n", Environment.NewLine);
}
Надеюсь, это кому-нибудь поможет.