在 C# 开发中,我们经常需要判断一个集合是否满足某些特定条件。比如:“这个列表里有没有负数?”、“所有用户都年满18岁了吗?”。这时候,LINQ 提供的 Any() 和 All() 方法就派上大用场了!
本文将用通俗易懂的方式,带你彻底掌握这两个强大的 C# LINQ 方法,即使是编程小白也能轻松上手。
Any() 用于判断集合中是否存在至少一个元素满足指定条件。只要有一个满足,就返回 true;否则返回 false。
不传任何条件时,Any() 仅检查集合是否非空:
List<int> numbers = new List<int>();bool hasElements = numbers.Any(); // false,因为列表为空numbers.Add(5);hasElements = numbers.Any(); // true,因为现在有元素了 传入一个 Lambda 表达式作为条件:
List<int> scores = new List<int> { 85, 92, 78, 96, 88 };// 判断是否有成绩低于80分bool hasLowScore = scores.Any(x => x < 80); // true// 判断是否有成绩大于100分bool hasOver100 = scores.Any(x => x > 100); // false All() 用于判断集合中是否所有元素都满足指定条件。只有全部满足才返回 true;只要有一个不满足,就返回 false。
List<int> ages = new List<int> { 20, 25, 30, 18 };// 判断是否所有人都年满18岁bool allAdults = ages.All(age => age >= 18); // trueages.Add(16);allAdults = ages.All(age => age >= 18); // false,因为16岁不满足 这是一个容易被忽略的细节:如果集合为空,All() 会返回 true。这在逻辑上是合理的——“所有元素都满足条件”在空集上被视为“没有反例”,所以成立。
List<string> emptyList = new List<string>();bool result = emptyList.All(s => s.Length > 5); // true! | 方法 | 含义 | 空集合结果 |
|---|---|---|
Any() | 是否存在至少一个元素满足条件 | false |
All() | 是否所有元素都满足条件 | true |
假设我们有一个用户列表,想验证以下业务规则:
public class User{ public string Name { get; set; } public string Email { get; set; } public bool IsVip { get; set; }}var users = new List<User>{ new User { Name = "张三", Email = "zhang@example.com", IsVip = false }, new User { Name = "李四", Email = "li@example.com", IsVip = true }, new User { Name = "王五", Email = "wang@example.com", IsVip = false }};// 检查是否有 VIP 用户bool hasVip = users.Any(u => u.IsVip); // true// 检查所有用户邮箱是否有效(非空且包含 '@')bool allEmailsValid = users.All(u => !string.IsNullOrEmpty(u.Email) && u.Email.Contains("@")); // true - Any() 在找到第一个满足条件的元素后就会立即返回 true,不会遍历整个集合,效率高。
- All() 一旦发现一个不满足条件的元素,也会立即返回 false,无需继续检查。
因此,在大多数场景下,这两个方法都非常高效,适合用于大型集合的快速判断。
通过本文,你已经掌握了 C# LINQ 中 Any() 和 All() 的核心用法。它们是进行 集合条件判断 的利器,能让你的代码更简洁、更易读。
记住:Any 是“有没有”,All 是“是不是全都是”。多加练习,你很快就能熟练运用这两个方法!
关键词:C# LINQ、Any方法、All方法、集合条件判断
本文由主机测评网于2025-12-04发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025122876.html