Лично я предпочитаю свое решение: -)
Он обрабатывает:
Он реализован как метод расширения и вычисляет количество фрагментов, которые будут генерироваться заранее. Он проверяет последний фрагмент, потому что если длина текста не кратная, она должна быть короче. Чистый, короткий, простой для понимания ... и работает!
public static string[] Split(this string value, int chunkSize)
{
if (string.IsNullOrEmpty(value)) throw new ArgumentException("The string cannot be null.");
if (chunkSize < 1) throw new ArgumentException("The chunk size should be equal or greater than one.");
int remainder;
int divResult = Math.DivRem(value.Length, chunkSize, out remainder);
int numberOfChunks = remainder > 0 ? divResult + 1 : divResult;
var result = new string[numberOfChunks];
int i = 0;
while (i < numberOfChunks - 1)
{
result[i] = value.Substring(i * chunkSize, chunkSize);
i++;
}
int lastChunkSize = remainder > 0 ? remainder : chunkSize;
result[i] = value.Substring(i * chunkSize, lastChunkSize);
return result;
}
Roles.GetRolesForUser()
Или
Roles.GetRolesForUser(String)
если не быть предназначением в настоящее время входило в систему пользователь.