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

sibbora

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

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

В документации только два метода описано для класса...
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
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());
 

sibbora

Client
Регистрация
23.11.2013
Сообщения
149
Благодарностей
73
Баллы
28
Спасибо! В конечном итоге, правильно ли я понимаю, что метод Shuffle работает только со списками, элементами которых являются строки <string>, в то время как списки в постере по умолчанию создаются с типом <variable>. Или это шаманство имеет какую-то другую цель?
 

Nick

Client
Регистрация
22.07.2014
Сообщения
1 983
Благодарностей
817
Баллы
113
Да нет, по идее это метод-генерик, то есть ему по барабану, какой тип имеют элементы списка. Он «видит» только хэш-метку элементов и внутрь не заглядывает.
 

keltuzhaknut

Client
Регистрация
24.02.2016
Сообщения
221
Благодарностей
3
Баллы
18
блок откручует, но содержимые строки в списке - не мешает... В чем дело?
 

Nick

Client
Регистрация
22.07.2014
Сообщения
1 983
Благодарностей
817
Баллы
113
Список строки не мешат - это Путин виноват!

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

Код:
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);
            }
 

keltuzhaknut

Client
Регистрация
24.02.2016
Сообщения
221
Благодарностей
3
Баллы
18
Спасибо, да уже использую. Путин ни при чем, знаний не хватает, но эт временно). Спасибо за отзывчивость.
 

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