在C#开发中,LINQ(Language Integrated Query) 是处理集合数据的强大工具。其中 Where 方法用于根据指定条件筛选数据,是开发者最常用的功能之一。本文将带你从基础到进阶,全面掌握 C# LINQ Where条件筛选 的高级写法,即使是编程小白也能轻松上手!

首先,我们快速回顾一下 Where 的基础语法:
var numbers = new List { 1, 2, 3, 4, 5, 6 };var evenNumbers = numbers.Where(x => x % 2 == 0).ToList();// 结果: [2, 4, 6] 这里使用 Lambda 表达式 x => x % 2 == 0 筛选出所有偶数。
实际开发中,我们经常需要同时满足多个条件。可以使用逻辑运算符 &&(与)、||(或)进行组合:
var products = new List{ new Product { Name = "苹果", Price = 5, Category = "水果" }, new Product { Name = "香蕉", Price = 3, Category = "水果" }, new Product { Name = "牛奶", Price = 8, Category = "饮品" }};// 筛选价格大于4且属于“水果”类别的商品var filtered = products.Where(p => p.Price > 4 && p.Category == "水果").ToList(); 在 Web 开发或搜索功能中,用户输入的筛选条件往往是动态的。这时不能写死 Lambda 表达式,而应动态构建查询条件。以下是两种常用方法:
IQueryable query = products.AsQueryable();if (!string.IsNullOrEmpty(searchKeyword)) query = query.Where(p => p.Name.Contains(searchKeyword));if (minPrice.HasValue) query = query.Where(p => p.Price >= minPrice.Value);if (!string.IsNullOrEmpty(category)) query = query.Where(p => p.Category == category);var result = query.ToList(); 这种方式利用了 LINQ 的延迟执行特性,只有在调用 ToList() 时才真正执行 SQL(如果是 Entity Framework)或遍历集合。
如果你需要更复杂的动态表达式(比如 OR 条件),可以使用第三方库如 LinqKit:
// 需先安装 NuGet 包:LinqKitusing LinqKit;var predicate = PredicateBuilder.New(true); // 初始为 trueif (!string.IsNullOrEmpty(keyword)) predicate = predicate.And(p => p.Name.Contains(keyword));if (priceRange == "cheap") predicate = predicate.Or(p => p.Price < 5); // 注意这里是 Orvar result = products.AsExpandable().Where(predicate).ToList(); 你也可以将复杂的判断逻辑封装成方法,提高代码可读性:
bool IsPremiumProduct(Product p){ return p.Price > 10 && !p.Name.StartsWith("测试");}var premiumProducts = products.Where(IsPremiumProduct).ToList();注意:如果使用 Entity Framework,自定义方法可能无法转换为 SQL,此时应改用表达式树(Expression)。
IQueryable<T> 而非 IEnumerable<T>,以便在数据库层面完成筛选(适用于 EF Core)。Where 中调用外部方法或属性,可能导致全表扫描。Where,简单且高效。通过本文,你已经掌握了 C# LINQ Where条件筛选 的多种高级写法,包括多条件组合、动态查询构建、自定义方法等。这些技巧不仅能提升你的 LINQ高级用法 水平,还能显著优化应用的 C#数据过滤技巧。在复杂业务场景中,合理使用 LINQ动态查询 将让你的代码更加灵活、可维护。
小贴士:多练习、多调试,你会发现 LINQ 的强大远超想象!
本文由主机测评网于2025-12-08发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025124749.html