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

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

Porosenok

Client
Регистрация
26.09.2010
Сообщения
1 302
Реакции
148
Баллы
63
Подскажите как? Поиском ищу, не получается
 
C#:
Развернуть Свернуть Копировать
var data = project.Lists["Список1"];
Random rnd = new Random();
var rez = data[rnd.Next(0,rnd.Count()-1)];
 
Последнее редактирование:
  • Оценить
Реакции: sentinel и Porosenok
C#:
Развернуть Свернуть Копировать
var data = project.Lists["Список1"];
Random rnd = new Random();
return rez = data[rnd.Next(0,rnd.Count-1];
Там скобочки закрывающей в самом конце не хватило. Я поправил, но все равно
1F6Ntm.png
 
  • Оценить
Реакции: Radzhab
Все равно ругается
ygcNZL.png
 
Код:
Развернуть Свернуть Копировать
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
 
return rez = data[rnd.Next(data.Count)];
а не так
return data[rnd.Next(data.Count)];
 
  • Оценить
Реакции: Porosenok
Еще возник вопрос, а как сделать чтобы брал строку, потом брал еще одну, ставил между ними запятую и складывал в переменную?
Циклом for как-то нужно, но не пойму как
 
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
В начале запятая к сожалению остается.
Понял, перед циклом нужно задать значение переменной этой, тогда там вначале будет чтото, а не просто пустота
 
А можно как-то чтобы внутри кубика сишарпа строки брались с удалением, т.е. чтобы не дублировались, но сам список оставался не тронутым?
 
А можно как-то чтобы внутри кубика сишарпа строки брались с удалением, т.е. чтобы не дублировались, но сам список оставался не тронутым?
уже конкректно бы написал от я до я что надо, а то по кусочкам гоняешь нас )))
 
уже конкректно бы написал от я до я что надо, а то по кусочкам гоняешь нас )))
ну я по мере возникновения вопросов)
ну в общем есть список, нужно из него брать строки и складывать в одну переменную через запятую. Все уже впринципе готово, но они только повторяться могут, вот хотелось бы избежать
 
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

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