在标签上显示匹配的随机数

时间:2015-03-25 19:44:44

标签: c# winforms

我是c#的初学者,基本上我在两个不同的列表框中生成随机数,但我想写一个标签上两个列表中的数字。我试过这个,但它不起作用:

 private void matchednumbers_TextChanged(object sender, EventArgs e)
    {
      lbluckynumbers.Items.Contains(lbmynumbers.Items).ToString();

    }                                                

1 个答案:

答案 0 :(得分:0)

首先,您希望使用Where来过滤其中一个集合,条件非常简单,另一个列表包含它!所以你从以下内容开始:

IEnumerable<int> matches = firstCollection.Where(i => secondCollection.Contains(i));

请注意,此算法有点...无效(O(n ^ 2)),因为您必须为firstCollection中的每个项目运行所有secondCollection。虽然它适用于小套装。

更好的方法是使用Intersect来完成所有适用的工作(通常是O(2n)来启动!):)(感谢@ScottChamberlain)

IEnumerable<int> matches = firstCollection.Intersect(secondCollection);

在这两种情况下,我都假设两个列表中的n大致相同。

现在您需要将该集合转换为文本。 String.Join在这里非常有用,因为它将占用集合的每个元素,调用ToString将其转换为字符串,并用我们选择的字符串将它们分开!类似的东西:

resultLabel.Text = String.Join(",", matches);