📜  linq where id in list - C# (1)

📅  最后修改于: 2023-12-03 15:17:19.819000             🧑  作者: Mango

LINQ where id in list - C#

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 值的整数列表 idsToSearchsubsetOfPeople 变量是通过 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> 的对象。