📅  最后修改于: 2023-12-03 14:43:54.501000             🧑  作者: Mango
在 LINQ 中,我们可以使用 Where
子句对序列进行过滤。本文将介绍如何有条件地添加 Where
子句,以便更好地满足我们的需求。
首先,让我们回顾一下如何使用 Where
子句对序列进行过滤。假设我们有一个整数列表:
List<int> numbers = new List<int> {1, 2, 3, 4, 5};
我们可以使用 Where
子句过滤出小于等于 3 的数字:
var filtered = numbers.Where(n => n <= 3);
这样就得到了一个新的序列 filtered
,其中只包含小于等于 3 的数字。我们也可以使用多个 Where
子句进行复杂的过滤:
var filtered = numbers.Where(n => n % 2 == 0).Where(n => n <= 4);
这样就得到了一个新的序列 filtered
,其中只包含偶数且小于等于 4 的数字。
有时候我们需要根据某些条件来决定是否添加 Where
子句。例如,我们可能需要根据用户的输入动态地构建查询,而这个查询可能包含多个条件。为了解决这个问题,我们可以使用 LINQ 的方法链。
假设我们有一个查询条件对象 Query
,其中包含一个布尔类型的属性 IsFiltered
,用于表示是否需要进行过滤。我们可以根据这个属性来有条件地添加 Where
子句:
List<int> numbers = new List<int> {1, 2, 3, 4, 5};
Query query = new Query {IsFiltered = true}; // 假设需要进行过滤
var filtered = numbers
.Where(n => !query.IsFiltered || n <= 3)
.Where(n => !query.IsFiltered || n % 2 == 0);
在上面的代码中,我们使用了两个 Where
子句。第一个子句用于过滤出小于等于 3 的数字,第二个子句用于过滤出偶数。这两个子句之前使用了一个逻辑运算符 ||
,用于表示如果 IsFiltered
属性为 false
,则不需要进行过滤,否则需要进行过滤。
本文介绍了如何使用 Where
子句对序列进行过滤,并且演示了如何有条件地添加 Where
子句。通过动态地构建查询条件,我们可以更好地满足我们的需求。