中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

c# distinctby能處理自定義類型嗎

c#
小樊
81
2024-11-28 18:10:16
欄目: 編程語言

是的,C# 的 DistinctBy 方法可以處理自定義類型。DistinctBy 是 LINQ 擴展方法,它允許你根據指定的屬性或表達式對集合中的元素進行去重。為了使用 DistinctBy 處理自定義類型,你需要實現 IEquatable<T> 接口,并在你的自定義類中重寫 EqualsGetHashCode 方法。

以下是一個示例:

using System;
using System.Collections.Generic;
using System.Linq;

public class Person : IEquatable<Person>
{
    public string Name { get; set; }
    public int Age { get; set; }

    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }

    public override bool Equals(object obj)
    {
        if (obj == null || GetType() != obj.GetType())
            return false;

        Person person = (Person)obj;

        return Age == person.Age && string.Equals(Name, person.Name);
    }

    public override int GetHashCode()
    {
        unchecked
        {
            int hash = 17;
            hash = hash * 23 + (Name != null ? Name.GetHashCode() : 0);
            hash = hash * 23 + Age;
            return hash;
        }
    }
}

class Program
{
    static void Main(string[] args)
    {
        List<Person> people = new List<Person>
        {
            new Person("Alice", 30),
            new Person("Bob", 25),
            new Person("Alice", 30),
            new Person("Charlie", 22)
        };

        var distinctPeople = people.DistinctBy(p => p.Name);

        foreach (var person in distinctPeople)
        {
            Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
        }
    }
}

在這個示例中,我們創建了一個 Person 類,實現了 IEquatable<Person> 接口,并重寫了 EqualsGetHashCode 方法。然后我們使用 DistinctBy 方法根據 Name 屬性對 people 列表進行去重。

0
洛隆县| 尉犁县| 龙门县| 孝义市| 突泉县| 彭山县| 马尔康县| 靖江市| 客服| 周口市| 五台县| 陆川县| 宝鸡市| 道真| 民县| 清远市| 建水县| 阜阳市| 石首市| 昭通市| 改则县| 河津市| 太原市| 阿瓦提县| 高尔夫| 拉萨市| 临夏市| 永德县| 和林格尔县| 宝兴县| 东至县| 金塔县| 兰溪市| 拜城县| 嵊泗县| 米脂县| 涿鹿县| 新密市| 凯里市| 阿拉尔市| 东莞市|