温馨提示×

c# distinctby有哪些用法

c#
小樊
82
2024-11-28 18:33:23
栏目: 编程语言

C# 中的 DistinctBy 是一个 LINQ 方法,用于从集合中删除重复项,同时保持元素的顺序。它接受一个 lambda 表达式作为参数,该表达式用于确定集合中的唯一元素。以下是一些 DistinctBy 的常见用法:

  1. 删除列表中的重复项

    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
    
  2. 根据属性删除重复项

    假设有一个 Person 类,其中包含 NameAge 属性:

    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
    
  3. 结合其他 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 是一个非常有用的方法,可以帮助你轻松地删除集合中的重复项,同时保持元素的顺序。

0