如果collection包含满足谓词的元素,则LINQ返回true

时间:2019-12-21 01:56:06

标签: linq nullable

public enum Status
{
  Unspecified = 0,
  Good = 1,
  Broken = 2
}

IEnumerable<Status> Statuses;

如果Statusesnullempty,我想返回false

如果Statuses包含一个或多个Broken,我想返回true

public bool AnyBroken => (Statuses != null) && Statuses.Count(s => s == Status.Broken) > 0;

我想简化语法。我想我可以使用???,但我不太清楚如何使用。

2 个答案:

答案 0 :(得分:1)

您可以使用Enumerable.Any。例如

public bool AnyBroken => Statuses?.Any(x=>x == Status.Broken)==true;

答案 1 :(得分:0)

您可以尝试通过这种方式链接到实时演示here

请注意:You has just use Null-conditional operators of C# 6 Feature or higher version

using System;
using System.Linq;

public class Program
{
    public static void Main()
    {
        var listContainBroken = new [] { Status.Broken,  Status.Unspecified }; 
        var listDoesNotContainBroken = new [] { Status.Unspecified }; 

        Console.WriteLine("List Contain Broken: " + listContainBroken?.Any(s => s == Status.Broken));
        Console.WriteLine("List Does not Contain Broken: " + listDoesNotContainBroken?.Any(s => s == Status.Broken));
    }

    public enum Status
    {
      Unspecified = 0,
      Good = 1,
      Broken = 2
    }
}