【问题标题】:does not contain in an ObservableCollection不包含在 ObservableCollection 中
【发布时间】:2017-10-20 00:12:26
【问题描述】:

嗨,我整晚都在搞砸我的脑袋,我知道我错过了一些简单的东西。请帮忙!

我有一个名为“TakenSlots”的可观察集合。我想看看它不包含哪些整数。

当我使用普通的 contains() 方法时它工作正常,但使用 !contains() 方法不返回任何内容。

            int y =1;
            foreach(item in TakenSlots)
            {
              if (!(TakenSlots.Contains(y)))
              {
                await DisplayAlert("Alert",y.ToString(),"Ok");
              }
               y++;
            }

【问题讨论】:

  • Contains() 返回 true 或 false - 你说 “不返回任何东西”是什么意思
  • @slugster 它没有执行并且没有错误。例如,我想检查数字“4”是否在集合中,如果没有,则显示该数字。
  • @JohnDoe 这似乎是XY problem。这段代码怎么称呼?听起来你陷入了僵局
  • 嗨@Nkosi 谢谢你的回复。我的问题是我想看看一个可观察的集合是否不包含一个数字(int y)。如果它不包含数字,则显示消息。我也愿意接受其他方式。
  • @JohnDoe 您那里的代码应该可以工作。你在调试过程中单步调试过代码吗?

标签: c# .net for-loop xamarin observablecollection


【解决方案1】:

你对DisplayAlert 的使用让你失望了——要么它不工作,因为你不在主线程上,要么还有其他问题,但如果你使用一个简单的WriteLine 语句,它会按预期工作

ObservableCollection<int> data = new ObservableCollection<int>();

data.Add(1);
data.Add(2);
data.Add(4);

Console.WriteLine(!data.Contains(1));
Console.WriteLine(!data.Contains(2));
Console.WriteLine(!data.Contains(4));
Console.WriteLine(!data.Contains(5));

返回

false
false
false
true

【讨论】:

  • 感谢您的帮助。仍然没有快乐不起作用,也没有错误。
  • 那么肯定有其他事情发生。您能否更新您的帖子以包含有关该代码在您的应用程序中运行位置的更多上下文?
  • 我在那里编辑了它。当我正常使用 .Contains() 方法来检查 Observable 集合是否包含数字时,它工作正常。当我使用它来查看它是否不包含数字时,它会完全跳过 if 语句。
【解决方案2】:

解决了! 由于某种原因,它不适用于 foreach 循环。

 for (int i = 1; i <= 8; i++)
            {


                if (!(TakenSlots.Contains(i)))
                {
                    await DisplayAlert("Alert", "does not contain " + i, "Ok");
                }
                else
                {
                    await DisplayAlert("Alert", "does contain " + i, "Ok");
                }


            }

【讨论】:

  • 您的原始帖子没有包含 foreach 循环,是吗?
  • 不,它没有,我在那里编辑了它。感谢您的帮助@Jason
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-15
  • 1970-01-01
  • 2012-06-25
  • 2014-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多