📅  最后修改于: 2023-12-03 15:17:19.819000             🧑  作者: Mango
LINQ (Language Integrated Query) 是一种访问数据的方式,它允许程序员以类似 SQL 的语法查询对象集合。其中,where
操作符用于筛选符合特定条件的元素。在本文中,我们将介绍如何使用 where
操作符对 id 值在给定列表中的元素进行筛选。
假设我们有一个包含 Person
对象的列表。每个 Person
对象都有一个唯一的 id
属性和其他属性。现在,我们想要从列表中获取一个子集,其中 id
值在给定列表中。
下面是使用 LINQ where
操作符实现该功能的代码示例:
List<Person> people = new List<Person>();
List<int> idsToSearch = new List<int> { 1, 3, 5 };
List<Person> subsetOfPeople = people.Where(p => idsToSearch.Contains(p.id)).ToList();
该代码首先定义了一个 people
列表,其中包含多个 Person
对象。然后,它定义了一个包含 id
值的整数列表 idsToSearch
。subsetOfPeople
变量是通过 Where
操作符将列表中 id
值在 idsToSearch
中的元素筛选出来的结果。
现在,我们将解读上面的代码,以便更好地理解其中的每个部分。
我们首先声明了一个类型为 List<Person>
的列表 people
,其中包含多个 Person
对象。我们还声明了一个类型为 List<int>
的 idsToSearch
列表,其中包含我们要筛选的 id
值。注意,我们使用 $
符号将列表对象包含在一个命名元组中,以方便在后续查询中引用它。这个命名元组会随着查询的进行,对于每个列表中的元素,它将对应一个名为 p
的变量。
List<Person> people = new List<Person>();
List<int> idsToSearch = new List<int> { 1, 3, 5 };
var subsetOfPeople = from p in people
where idsToSearch.Contains(p.id)
select p;
接下来,我们在 people
列表上使用 LINQ 查询。在查询中,我们使用 from
关键字指定从 people
列表中选择元素,并使用 where
关键字筛选这些元素。注意,where
子句的参数是一个 lambda 表达式,它指定我们要在查询中筛选哪些元素。在本例中,我们筛选了 id
值在 idsToSearch
列表中的元素。
最后,我们使用 select
关键字告诉 LINQ 返回 Person
对象本身,而不是某些复杂的子集。这将返回一个 IEnumerable<Person>
对象。
List<Person> people = new List<Person>();
List<int> idsToSearch = new List<int> { 1, 3, 5 };
List<Person> subsetOfPeople = people.Where(p => idsToSearch.Contains(p.id)).ToList();
在上面的代码中,我们使用 LINQ 扩展方法实现相同的操作。注意,我们使用 ToList()
方法将 IEnumerable<Person>
对象转换为类型为 List<Person>
的对象。