.Range返回true,应该是false

Cod*_*het 0 c# linq

我有以下内容:

   if (settingsAgeFrom > 0 && settingsAgeTo > 0)
   {
      if (!Enumerable.Range(settingsAgeFrom, settingsAgeTo).Contains(age))
      {
         canContact = false;
      } 
   }
Run Code Online (Sandbox Code Playgroud)

这基本上检查年龄是否在settingsAgeFrom和settingsAgeTo之间

settingsAgeFrom = 18
settingsAgeTo = 20
age = 26
Run Code Online (Sandbox Code Playgroud)

应该返回false并将canContact设置为false,而是跳过它说明它有效?

我在这里错过了什么吗?

所有三个变量都是int类型.

Rah*_*ngh 7

你弄错了,Enumerable.Range有第二个参数count,它应该是: -

if (!Enumerable.Range(settingsAgeFrom, (settingsAgeTo - settingsAgeFrom) + 1)
               .Contains(age))
Run Code Online (Sandbox Code Playgroud)

因此,您的范围将是18 - 20而不是18 - 37(您当前的代码正在生成).