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

如何使用LINQ对包含姓名文本的List集合按指定姓氏排序

LINQ 筛选指定姓氏学生集合实现

首先给出和示例对齐的Student类定义:

public class Student
{
    // 存储全名的公开属性
    public string FullName { get; }
    
    public Student(string fullName)
    {
        FullName = fullName;
    }
}

你给出的集合初始化代码:

List<Student> students = new List<Student>()
{
    new Student("John Doe"),
    new Student("Lucy Novak")
};

核心实现逻辑

1. 规则说明

示例为英文姓名,姓氏为全名按空格分割后的最后一段;如果是中文姓在前的场景,把下文代码中的Last()改为First()即可。

2. LINQ 代码(支持筛选+自定义排序)

这里以筛选姓氏为Doe、按全名升序排序为例:

// 目标筛选姓氏
string targetSurname = "Doe";

// LINQ方法语法实现,更简洁常用
var resultList = students
    // 筛选匹配姓氏的元素,加忽略大小写参数兼容不同大小写的输入
    .Where(stu => stu.FullName.Split(' ').Last().Equals(targetSurname, StringComparison.OrdinalIgnoreCase))
    // 不需要排序可以直接删掉下面这行
    .OrderBy(stu => stu.FullName)
    .ToList();

3. 输出效果实现

if (resultList.Any())
{
    Console.WriteLine($"姓氏为{targetSurname}的学生:{string.Join("、", resultList.Select(stu => stu.FullName))}");
}

运行后输出结果为:

姓氏为Doe的学生:John Doe

注意事项

  • 如果姓名存在多个连续空格的情况,可以把Split(' ')改为Split(' ', StringSplitOptions.RemoveEmptyEntries)避免空值匹配错误
  • 不需要忽略大小写匹配的话,删掉StringComparison.OrdinalIgnoreCase参数即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:24:01