📜  按 linq 中的 id 列表过滤 (1)

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

在 LINQ 中使用 ID 列表进行过滤

LINQ(Language Integrated Query)是一个强大的 C# 查询语言,它提供了一种简便的方法来操作各种数据源。在 LINQ 中使用 ID 列表进行过滤是非常常见的需求,下面将会介绍如何使用 LINQ 来实现这个功能。

准备工作

首先我们需要有一个数据源,这里我们以一个简单的人员列表为例:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

List<Person> persons = new List<Person>()
{
    new Person() { Id=1, Name="张三", Age=22 },
    new Person() { Id=2, Name="李四", Age=25 },
    new Person() { Id=3, Name="王五", Age=33 },
    new Person() { Id=4, Name="赵六", Age=18 },
    new Person() { Id=5, Name="钱七", Age=28 }
};
使用 ID 列表进行过滤

现在我们有了这个人员列表,如果我们想要根据指定的 ID 列表来获取对应的人员信息,可以使用以下方式:

List<int> ids = new List<int>() { 1, 3, 5 };

var query = from p in persons
            where ids.Contains(p.Id)
            select p;

在上面的代码中,我们使用了 where 关键字和 Contains 方法进行了过滤操作。其中 where 定义了过滤条件,而 Contains 用于判断指定的 ID 是否在 ids 列表中存在。

最终我们返回了一个查询结果,其中包含 ID 列表中所对应的人员信息。需要注意的是,此时返回的结果是一个 LINQ 查询。

如果我们希望获得实际的人员列表(而不是 LINQ 查询),我们可以使用以下方式来获取最终的结果:

List<Person> result = query.ToList();

或者直接将两个查询合并为一句,简化代码:

List<Person> result = (from p in persons
                       where ids.Contains(p.Id)
                       select p).ToList();
总结

在 LINQ 中使用 ID 列表进行过滤是非常常见的操作。通过上面的介绍,我们可以看到 LINQ 能够提供简便的方法来操作各种数据源。希望这篇文章能够对您有所帮助。