You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用LINQ筛选Person列表中角色属于允许列表的对象

使用LINQ过滤符合允许角色列表的Person对象

没问题,这事儿用LINQ的Where方法结合集合的Contains方法就能轻松搞定,完全不用写显式循环,代码简洁还符合你的需求。

核心过滤代码

直接用Where筛选每个Person的Role是否存在于allowedRoles列表中就行:

var filteredPersons = persons.Where(p => allowedRoles.Contains(p.Role)).ToList();

完整示例代码

把你的代码上下文整合起来,完整的实现是这样的:

// 定义Person类
public class Person 
{
    public string Name { get; set; }
    public string Role { get; set; }
}

// 硬编码的允许角色列表
var allowedRoles = new List<string>{"Developer","Admin","Recruiter"};

// 假设这是你从XML解析得到的Person列表
var persons = new List<Person>
{
    new Person { Name = "Alice", Role = "Developer" },
    new Person { Name = "Bob", Role = "Designer" }, // 不在允许列表里,会被过滤掉
    new Person { Name = "Charlie", Role = "Admin" }
};

// LINQ过滤
var filteredPersons = persons.Where(p => allowedRoles.Contains(p.Role)).ToList();

// 输出结果验证
foreach (var person in filteredPersons)
{
    Console.WriteLine($"{person.Name} - {person.Role}");
}

运行这段代码后,只会输出Alice和Charlie的信息,Bob因为Role不在允许列表里会被排除。

额外优化:处理大小写敏感问题

如果XML里的角色可能有大小写差异(比如输入的是developer而不是Developer),可以用Contains的重载方法指定忽略大小写的比较器:

var filteredPersons = persons.Where(p => allowedRoles.Contains(p.Role, StringComparer.OrdinalIgnoreCase)).ToList();

这样不管是大写还是小写的角色名,只要内容匹配就会被保留,灵活性更高。

内容的提问来源于stack exchange,提问作者Mass

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 12:47:49