如何在C#中使用逗号分隔值搜索List集合
根据逗号分隔字符串筛选List元素
实现思路
- 先把逗号分隔的搜索字符串拆成名称集合,顺便处理可能存在的空格,避免因空格导致匹配失败
- 用LINQ的
Where搭配Contains方法,从学生列表里筛出名称匹配的元素
完整代码示例
先补上Student类的定义(如果还没定义的话):
public class Student { public int Id { get; set; } public string Name { get; set; } // 重写ToString方便直接输出结果格式 public override string ToString() { return $"{{Id = {Id}, Name=\"{Name}\"}}"; } }
然后是核心筛选逻辑:
var students = new List<Student>() { new Student(){ Id = 1, Name="One"}, new Student(){ Id = 2, Name="Two"}, new Student(){ Id = 3, Name="Three"}, new Student(){ Id = 4, Name="Four"}, new Student(){ Id = 5, Name="Five"} }; var searchString = "Two,Three"; // 分割搜索字符串,清理空项和多余空格 var searchNames = searchString.Split(',') .Select(name => name.Trim()) .Where(name => !string.IsNullOrEmpty(name)) .ToList(); // 筛选匹配的学生 var matchedStudents = students.Where(s => searchNames.Contains(s.Name)).ToList(); // 输出结果 foreach (var student in matchedStudents) { Console.WriteLine(student); }
运行结果
{Id = 2, Name="Two"} {Id = 3, Name="Three"}
额外说明
- 如果搜索字符串里带空格(比如
"Two, Three"),Trim()会自动去掉名称前后的空格,保证匹配精准 Where(name => !string.IsNullOrEmpty(name))可以过滤掉分割后出现的空字符串(比如搜索串开头/结尾带逗号的情况)
内容的提问来源于stack exchange,提问作者Raj
相关产品推荐
相关产品推荐

