c# - HashSet 中的剩余值进入辅助输出

标签 c# hashset

我们被要求创建一个程序,该程序需要飞机上的座位和乘客的 2 个输入(我已解析),并在一个输出中将乘客随机放置在飞机上的座位上,并将剩余座位放置在一个输出中。二次输出。

我想知道是否有一种简单的方法可以将 HashSet 中的剩余值替换为 listBoxLedige

就目前而言,席位正在分配,但第二个输出中的值与第一个输出无关。

if(passengers > seats)
{
    MessageBox.Show("For mange passagerer");
}
else
{
    HashSet<int> check = new HashSet<int>();
    for(int i = 0; i <= passengers - 1; i++)
    {
        int resultat = rnd.Next(1, seats + 1);
        while(check.Contains(resultat))
        {
            resultat = rnd.Next(1, seats + 1);
        }
        check.Add(resultat);
        int[] passagerer01 = new int[passengers];
        passagerer01[i] = i+1;
        listBoxFulde.Items.Add("Passager #" + passagerer01[i] + "på sæde #" + resultat);
    }
    HashSet<int> ledige01 = new HashSet<int>();
    for(int i = 0; i <= (seats - passengers - 1); i++)
    {
        int tilbage = rnd.Next(1, seats + 1);
        while(ledige01.Contains(tilbage))
        {
            ledige01.Add(tilbage);
        }
        listBoxLedige.Items.Add("Sæde #" + tilbage);

最佳答案

我不太确定我是否理解您的问题,但是您是否看过 Except LINQ 扩展方法?根据您的措辞(“剩余值”)判断,这可能是适合您的方法。

编辑具体操作如下:

 IEnumerable<int> empty = allSeats.Except(check);

请注意 empty 现在如何成为延迟枚举器(除非您执行 .ToArray().ToList() 或类似的内容)。

关于c# - HashSet 中的剩余值进入辅助输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19039625/

相关文章:

c# - 派生类中属性的可见性 (C#)

c# - Entity Framework linq 查询何时返回动态代理类型,何时不返回?

java - 了解Java HashSet的contains方法

c# - HashSet 中的 Union 与 Unionwith

Java:为什么我的 HashSet 和 TreeSet 包含重复项?

C# 错误(使用接口(interface)方法): An object reference is required for the non-static field, 方法或属性

c# - 在 C# 中的数据类型之间进行转换

c# - 将 C(不是 C++)转换为 C#

Java:有效的数据结构来存储没有 'logical' 重复项的对象

java - 了解从 HashSet 生成的流中元素的顺序