Получить рандомную строку из списка без удаления

Porosenok

Client
Регистрация
26.09.2010
Сообщения
1 280
Благодарностей
96
Баллы
48
Подскажите как? Поиском ищу, не получается
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
C#:
var data = project.Lists["Список1"];
Random rnd = new Random();
var rez = data[rnd.Next(0,rnd.Count()-1)];
 
Последнее редактирование:
  • Спасибо
Реакции: sentinel и Porosenok

Porosenok

Client
Регистрация
26.09.2010
Сообщения
1 280
Благодарностей
96
Баллы
48
  • Спасибо
Реакции: Radzhab

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
Поправил
 

Porosenok

Client
Регистрация
26.09.2010
Сообщения
1 280
Благодарностей
96
Баллы
48
Все равно ругается
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Код:
var data = project.Lists["Список1"];
Random rnd = new Random();
return rez = data[rnd.Next(data.Count)];
 
  • Спасибо
Реакции: sentinel и Porosenok

Porosenok

Client
Регистрация
26.09.2010
Сообщения
1 280
Благодарностей
96
Баллы
48
Код:
var data = project.Lists["Список1"];
Random rnd = new Random();
return rez = data[rnd.Next(data.Count)];
спасибо, только там не return надо а var, сработало
Сразу не отходя от кассы спрошу, а как сделать чтобы потом в эту же переменную другую рандомную строчку? Чтобы не плодить переменные. А то если я снова напишу var rez = data[rnd.Next(data.Count)]; он будет ругаться что в этой области действия уже определена локальная переменная с именем rez
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113

Porosenok

Client
Регистрация
26.09.2010
Сообщения
1 280
Благодарностей
96
Баллы
48

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
return rez = data[rnd.Next(data.Count)];
а не так
return data[rnd.Next(data.Count)];
 
  • Спасибо
Реакции: Porosenok

Porosenok

Client
Регистрация
26.09.2010
Сообщения
1 280
Благодарностей
96
Баллы
48
Еще возник вопрос, а как сделать чтобы брал строку, потом брал еще одну, ставил между ними запятую и складывал в переменную?
Циклом for как-то нужно, но не пойму как
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
C#:
var data = project.Lists["Список1"];
Random rnd = new Random();

var rez = "";

for (int i = 0; i < 3; i++)
{
    rez += "," + data[rnd.Next(data.Count)];
}

return rez;
 
  • Спасибо
Реакции: Porosenok

Porosenok

Client
Регистрация
26.09.2010
Сообщения
1 280
Благодарностей
96
Баллы
48
В начале запятая к сожалению остается.
Понял, перед циклом нужно задать значение переменной этой, тогда там вначале будет чтото, а не просто пустота
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113

Porosenok

Client
Регистрация
26.09.2010
Сообщения
1 280
Благодарностей
96
Баллы
48
А можно как-то чтобы внутри кубика сишарпа строки брались с удалением, т.е. чтобы не дублировались, но сам список оставался не тронутым?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
А можно как-то чтобы внутри кубика сишарпа строки брались с удалением, т.е. чтобы не дублировались, но сам список оставался не тронутым?
уже конкректно бы написал от я до я что надо, а то по кусочкам гоняешь нас )))
 

Porosenok

Client
Регистрация
26.09.2010
Сообщения
1 280
Благодарностей
96
Баллы
48
уже конкректно бы написал от я до я что надо, а то по кусочкам гоняешь нас )))
ну я по мере возникновения вопросов)
ну в общем есть список, нужно из него брать строки и складывать в одну переменную через запятую. Все уже впринципе готово, но они только повторяться могут, вот хотелось бы избежать
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
C#:
//Это пишим в отдельном кубике где нить в самом начале
//При запуске шаблона обратиться к этому коду должны один раз
// project.Lists["Список"] список не привязанный
var path = "C:\\3.txt";
var list = File.ReadAllLines(path).ToList();
project.Lists["Список"].AddRange(list);
list.Clear();

// второй кубик
var data = project.Lists["Список"];
Random rnd = new Random();

var list1 = new List<string>();

for (int i = 0; i < 3; i++)
{
    var rez = data[rnd.Next(data.Count)];
    list1.Add(rez);
    data.Remove(rez);
}

project.Variables["peremenaya1"].Value = string.Join(",", list1);
если сильно голову не ломать то можно так
 
Последнее редактирование:
  • Спасибо
Реакции: sentinel и Porosenok

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