C# 中的 DistinctBy
是一个 LINQ 方法,用于从集合中删除重复项,同时保持元素的顺序。它接受一个 lambda 表达式作为参数,该表达式用于确定集合中的唯一元素。以下是一些 DistinctBy
的常见用法:
-
删除列表中的重复项:
var list = new List
{ 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
{ 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
{ 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
是一个非常有用的方法,可以帮助你轻松地删除集合中的重复项,同时保持元素的顺序。