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


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;

我想简化语法。我想我可以使用???但我不太明白如何。

您可以使用Enumerable.Any。例如

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

您可以尝试这种方式,在此处链接进行现场演示

请注意:您刚刚使用了 C# 6 功能或更高版本的Null-conditional operators

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
}
}

最新更新