我是c#的初学者,基本上我在两个不同的列表框中生成随机数,但我想写一个标签上两个列表中的数字。我试过这个,但它不起作用:
private void matchednumbers_TextChanged(object sender, EventArgs e)
{
lbluckynumbers.Items.Contains(lbmynumbers.Items).ToString();
}
答案 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);