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