C# Linq 中的 All 和 Any 有什么区别?

1. All 和 Any 的定义

在C#的Linq中,All 和 Any 是两个核心方法,它们对于集合中的元素进行条件筛选,判断是否符合要求,返回一个布尔值表示集合中的所有元素是否都符合条件(All),或至少有一个元素符合条件(Any)。

2. All 和 Any 的语法

2.1 All方法

All方法的语法如下:

public static bool All(this IEnumerable source, Func predicate);

其中,参数source表示要筛选的集合,predicate表示筛选条件,是一个委托,用于描述筛选逻辑。

2.2 Any方法

Any方法的语法如下:

public static bool Any(this IEnumerable source, Func predicate);

其中,参数source和predicate含义与All方法相同。

3. All 和 Any 的区别

All方法和Any方法的区别在于返回的结果。

3.1 All方法

All方法会对集合中所有元素进行条件判断,如果所有元素都符合条件,则返回true,否则返回false。

例如,如果我们有一个整数集合,需要判断是否所有元素都是偶数:

List numbers = new List { 2, 4, 6, 8 };

bool allEven = numbers.All(x => x % 2 == 0);

Console.WriteLine(allEven); // 输出 true

以上代码中,我们使用了All方法来判断集合中的元素是否都是偶数,结果为true。

再看一个例子,判断一个字符串集合中的所有元素是否全部是大写字母:

List words = new List { "HELLO", "WORLD" };

bool allUpperCase = words.All(x => x.All(char.IsUpper));

Console.WriteLine(allUpperCase); // 输出 true

以上代码中,我们使用了All方法来判断集合中的元素是否都只由大写字母组成,结果为true。

3.2 Any方法

Any方法会对集合中的所有元素进行条件判断,只要有一个元素符合条件,则返回true,否则返回false。

例如,判断一个整数集合中是否有任意一个元素是奇数:

List numbers = new List { 2, 4, 6, 7 };

bool anyOdd = numbers.Any(x => x % 2 != 0);

Console.WriteLine(anyOdd); // 输出 true

以上代码中,我们使用了Any方法来判断集合中的元素是否至少有一个是奇数,结果为true。

再看一个例子,判断一个字符串集合中是否有任意一个元素包含字母"a":

List words = new List { "HELLO", "WORLD" };

bool anyContainsA = words.Any(x => x.Contains("a"));

Console.WriteLine(anyContainsA); // 输出 false

以上代码中,我们使用了Any方法来判断集合中的元素是否至少有一个包含字母"a",结果为false。

4. 总结

All方法和Any方法是C# Linq中两个重要的条件筛选方法,它们在判断集合中元素是否符合要求时有着明显的区别。记住它们的语法和用途,可以在开发过程中快速筛选集合中的元素,提高代码的效率和可读性。

后端开发标签