C# 中的 DistinctBy
是一个 LINQ 方法,用于从集合中删除重复项,同时保持元素的顺序。它接受一个 lambda 表达式作为参数,该表达式用于确定集合中的唯一元素。以下是一些 DistinctBy
的常见用法:
删除列表中的重复项:
var list = new List<int> { 1, 2, 2, 3, 4, 4, 5 };
var distinctList = list.DistinctBy(x => x);
Console.WriteLine(string.Join(", ", distinctList)); // 输出: 1, 2, 3, 4, 5
根据属性删除重复项:
假设有一个 Person
类,其中包含 Name
和 Age
属性:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
可以使用 DistinctBy
根据 Name
属性删除重复项:
var people = new List<Person>
{
new Person { Name = "Alice", Age = 30 },
new Person { Name = "Bob", Age = 25 },
new Person { Name = "Alice", Age = 30 }
};
var distinctPeople = people.DistinctBy(p => p.Name);
Console.WriteLine(string.Join(", ", distinctPeople.Select(p => p.Name))); // 输出: Alice, Bob
结合其他 LINQ 方法使用:
可以将 DistinctBy
与其他 LINQ 方法(如 OrderBy
)结合使用,以实现更复杂的功能:
var numbers = new List<int> { 5, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5 };
var distinctNumbers = numbers
.OrderBy(x => x)
.DistinctBy(x => x);
Console.WriteLine(string.Join(", ", distinctNumbers)); // 输出: 1, 2, 3, 4, 5, 6, 9
总之,DistinctBy
是一个非常有用的方法,可以帮助你轻松地删除集合中的重复项,同时保持元素的顺序。