как отобразить ключ (только) из отсортированного списка? - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь определить правильный синтаксис для отображения случайного ключа на каждой метке.

display random sorted list key on label

//declare random
Random rnd = new Random();

//create the sorted list and add items
SortedList<string,string> sl = new SortedList<string,string>();
sl.Add("PicknPay", "jam");
sl.Add("Spar", "bread");
sl.Add("Checkers", "rice");
sl.Add("Shoprite", "potato");
sl.Add("Cambridge", "spinash");

int Count = 0;
int nValue = rnd.Next(5);
int newindex = 0;
int seekindex;

for (seekindex = 0; seekindex > nValue; seekindex++)
{
    newindex =  rnd.Next(seekindex);
}

lbl1.Text = "";

foreach (var item in sl.Keys) 
{
    lbl1.Text += "," + Convert.ToString(item.IndexOf(item));
}

lbl1.Text = lbl1.Text.TrimStart(',');

1 Ответ

0 голосов
/ 07 июня 2018

Один из способов сделать это - получить случайно упорядоченный список ключей, вызвав метод расширения System.Linq OrderBy и передав ему значение, возвращаемое из Random.Next()* 1007.*, затем возьмите первые три элемента из этого перемешанного списка:

SortedList<string, string> sl = new SortedList<string, string>
{
    {"PicknPay", "jam"},
    {"Spar", "bread"},
    {"Checkers", "rice"},
    {"Shoprite", "potato"},
    {"Cambridge", "spinash"}
};

var rnd = new Random();
var shuffledKeys = sl.Keys.OrderBy(key => rnd.Next()).ToList();

lbl1.Text = shuffledKeys[0];
lbl2.Text = shuffledKeys[1];
lbl3.Text = shuffledKeys[2];
...