Рандомизировать строки в списке - PullRequest
0 голосов
/ 22 ноября 2018
Dim myRandom As New Random
Dim myList As New List(Of String)(New String() {"A", "B", "C"})
myList.OrderBy(Function(i) myRandom.Next).ToList()
For k As Integer = 0 To 2
    MessageBox.Show(myList.Item(k))
Next

Когда вы запустите код, вы увидите, что MessageBoxes показывают A, B, C .

Я хочу, чтобы MessageBoxes показывали B, C, A или C, B, A или A, C, B или A, B, C или B, A, C или C, A, B в соответствии с рандомизированным результатом.

Примечание: использование Linq обязательно.

1 Ответ

0 голосов
/ 22 ноября 2018

Проблема в том, что ваш код не вносит никаких изменений в myList.Запрос LINQ ВСЕГДА генерирует новый список.Вам необходимо присвоить результат ToList обратно вашей переменной myList, то есть

myList = myList.OrderBy(Function(i) myRandom.Next).ToList()
...