Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何(仅)显示排序列表中的键?_C#_Collections_Labels_Keyvaluepair - Fatal编程技术网

C# 如何(仅)显示排序列表中的键?

C# 如何(仅)显示排序列表中的键?,c#,collections,labels,keyvaluepair,C#,Collections,Labels,Keyvaluepair,我试图确定在每个标签上显示随机键的正确语法 //声明随机 随机rnd=新随机(); //创建已排序的列表并添加项目 SortedList sl=新的SortedList(); sl.Add(“PicknPay”、“jam”); sl.Add(“Spar”、“bread”); sl.Add(“棋子”、“大米”); sl.Add(“Shoprite”、“土豆”); sl.Add(“剑桥”、“菠菜”); 整数计数=0; int nValue=rnd.Next(5); int newindex=0;

我试图确定在每个标签上显示随机键的正确语法

//声明随机
随机rnd=新随机();
//创建已排序的列表并添加项目
SortedList sl=新的SortedList();
sl.Add(“PicknPay”、“jam”);
sl.Add(“Spar”、“bread”);
sl.Add(“棋子”、“大米”);
sl.Add(“Shoprite”、“土豆”);
sl.Add(“剑桥”、“菠菜”);
整数计数=0;
int nValue=rnd.Next(5);
int newindex=0;
int-seekindex;
对于(seekindex=0;seekindex>nValue;seekindex++)
{
newindex=rnd.Next(参见kindex);
}
lbl1.Text=“”;
foreach(sl.Keys中的变量项)
{
lbl1.Text+=“,”+Convert.ToString(item.IndexOf(item));
}
lbl1.Text=lbl1.Text.TrimStart(',');

一种方法是通过调用
System.Linq
扩展方法并将返回的值传递给它,获得随机排列的密钥列表,然后从这个无序列表中获取前三项:

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];
SortedList sl=新的SortedList
{
{“PickPay”,“jam”},
{“Spar”,“bread”},
{“跳棋”,“大米”},
{“Shoprite”,“土豆”},
{“剑桥”、“菠菜”}
};
var rnd=新随机数();
var shuffledKeys=sl.Keys.OrderBy(key=>rnd.Next()).ToList();
lbl1.Text=shuffledKeys[0];
lbl2.Text=shuffledKeys[1];
lbl3.Text=shuffledKeys[2];

您是否试图从您的
SortedList
列表中选择一个唯一的随机键来显示在三个标签中?您的代码表示您正试图在
lbl1.Text
中显示所有这些文件,并用逗号分隔。我不确定我是否理解正确。是否要在
sl
中以自己的标签显示每个
?如果要随机洗牌已排序的列表,则可以在加载表单时使用linq order by。这三个标签应该显示从排序列表中随机选择的键…例如,当表单加载时,标签1显示“spar”,标签2显示“shopright”,标签3显示cambridge,但如果表单再次加载,则应该从上面随机选择不同的键。我不知道
OrderBy(key=>rnd.NextDouble())
。整洁的技巧,将添加到我的'提示和技巧',谢谢!谢谢你@Rufus L谢谢你,你的传奇你,你做得这么简单。。我的课本很没用,解释得不好。我谦恭地请求你给我推荐一本可以教我需要学习的书。但有一个问题,为什么
NextDouble()
,而不是
Next()
?@MO\u尝试我恐怕目前无法推荐任何书-我主要是在工作和网上学习。我的建议是继续玩小项目,问很多问题,你就会成功@Sach
Next()
也可以工作,而且可能效率更高一些。我来换样品。
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];