Как перемешать список из C#?

  • Автор темы Автор темы sibbora
  • Дата начала Дата начала

sibbora

Client
Регистрация
23.11.2013
Сообщения
149
Реакции
73
Баллы
28
Подскажите пожалуйста как перемешать в случайном порядке элементы списка. Пытаюсь сделать так:
Код:
Развернуть Свернуть Копировать
lstTemp.Shuffle();
Код отрабатывает, но данные в списке не перемешиваются.

Ещё если можно сразу подскажите, как правильно делать сортировку элементов по возрастанию и убыванию.

В документации только два метода описано для класса...
eySyhDg1p
 
List<string> tmplist = project.Lists["Список 1"].ToList();
project.Lists["Список 1"].Clear();

//перемешиваем
tmplist.Shuffle();

//сортировать по возрастанию
tmplist = tmplist.OrderBy(s=>s).ToList();
//по убыванию
tmplist = tmplist.OrderByDescending(s=>s).ToList();

//пишем в список
tmplist.ForEach(s=>project.Lists["Список 1"].Add(s));

//смотрим реузльтат
return string.Join("\n",project.Lists["Список 1"].ToArray());
 
Спасибо! В конечном итоге, правильно ли я понимаю, что метод Shuffle работает только со списками, элементами которых являются строки <string>, в то время как списки в постере по умолчанию создаются с типом <variable>. Или это шаманство имеет какую-то другую цель?
 
Да нет, по идее это метод-генерик, то есть ему по барабану, какой тип имеют элементы списка. Он «видит» только хэш-метку элементов и внутрь не заглядывает.
 
блок откручует, но содержимые строки в списке - не мешает... В чем дело?
 
Список строки не мешат - это Путин виноват!

Написали же в чате:

Код:
Развернуть Свернуть Копировать
Random RND = new Random();
            for (int i = 0; i < project.Lists["Rand_keywords"].Count; i++)
            {
                string tmp = project.Lists["Rand_keywords"][0];
                project.Lists["Rand_keywords"].RemoveAt(0);
                project.Lists["Rand_keywords"].Insert(RND.Next(project.Lists["Rand_keywords"].Count), tmp);
            }
 
Спасибо, да уже использую. Путин ни при чем, знаний не хватает, но эт временно). Спасибо за отзывчивость.
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)