C# 使用 LINQ 删除 List<Student> 中重复名称的元素,保留最新的日期
C# 使用 LINQ 删除 List 中重复名称的元素,保留最新的日期
本文将介绍如何使用 C# 和 LINQ 从 List
示例代码:
using System;
using System.Collections.Generic;
using System.Linq;
public class Student
{
public string Name { get; set; }
public DateTime Date { get; set; }
}
public class Program
{
public static void Main()
{
List<Student> students = new List<Student>
{
new Student { Name = 'Alice', Date = new DateTime(2022, 1, 1) },
new Student { Name = 'Bob', Date = new DateTime(2022, 2, 1) },
new Student { Name = 'Alice', Date = new DateTime(2022, 3, 1) },
new Student { Name = 'Charlie', Date = new DateTime(2022, 4, 1) },
new Student { Name = 'Bob', Date = new DateTime(2022, 5, 1) },
new Student { Name = 'Alice', Date = new DateTime(2022, 6, 1) }
};
var result = students
.GroupBy(s => s.Name)
.Select(g => g.OrderByDescending(s => s.Date).First())
.ToList();
students.RemoveAll(s => !result.Contains(s));
foreach (var student in students)
{
Console.WriteLine($'Name: {student.Name}, Date: {student.Date}');
}
}
}
代码说明:
- 首先,我们创建了一个包含学生信息的列表
students。 - 使用 LINQ 的
GroupBy方法按姓名进行分组。 - 使用
Select方法选择每个组中日期最新的元素,OrderByDescending按日期降序排列,First获取第一个元素(即最新的日期)。 - 将结果存储在
result列表中。 - 最后,使用
RemoveAll方法删除students列表中不在result列表中的元素,即删除重复姓名且日期较旧的元素。
输出结果:
Name: Bob, Date: 2022/05/01
Name: Alice, Date: 2022/06/01
Name: Charlie, Date: 2022/04/01
在这个例子中,Bob 和 Alice 的重复姓名已被删除,只保留了日期最新的元素。
总结:
本文展示了如何使用 C# 和 LINQ 从 List
注意:
在实际应用中,您可以根据需要修改 Student 类中的属性和代码中的逻辑。
原文地址: https://www.cveoy.top/t/topic/qeXN 著作权归作者所有。请勿转载和采集!