调用LINQ First()方法时出现InvalidArgument错误

Jam*_*213 3 c# linq

所以我的问题是我在这段代码中得到了一个无效的参数错误.它的意思是拿出一张牌并得到它们总价值的总和.然后,如果该值大于21,它会检查手中的任何牌是否是ace(或者类型是== ace并且它的牌totalVal == 11)现在我的问题是我为此写的语句无论手中是否有ace都会运行并抛出错误.

我想知道是否有任何其他方式我可以写下面的语句,以使其正确运行?

        public int HandTotal()
        {

          int total = CurrentCards.Sum(n => n.Total);
          **while ( total > 21 && CurrentCards.First(n => n.Type == 13 && n.Total == 11) !=null)**
          {                
              CurrentCards.First(n => n.Type == 13).Total = 1;
              total = CurrentCards.Sum(n => n.Total);
              return total;
          }
          return total;
        }
Run Code Online (Sandbox Code Playgroud)

我已经尝试了几种不同的方法,包括将!= null更改为> 0,但是会抛出一个无效的参数错误,说明>不能与此语句一起使用.有没有其他方法可以确定CurrentCards.First(n => n.Type == 13 && n.Total == 11)是真还是假?

非常感谢任何帮助或建议.

谢谢

Ode*_*ded 5

而不是First使用Any谓词.

while(total > 21 && CurrentCards.Any(n => n.Type == 13 && n.Total == 11))
Run Code Online (Sandbox Code Playgroud)