亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
策勒县| 富阳市| 全州县| 北碚区| 镇巴县| 札达县| 黑龙江省| 衢州市| 潞城市| 武邑县| 西贡区| 昌宁县| 潜江市| 静安区| 满城县| 平乐县| 赤峰市| 珠海市| 华安县| 贺兰县| 江都市| 合作市| 龙泉市| 衡阳市| 留坝县| 日土县| 贵南县| 山阳县| 双江| 赞皇县| 垣曲县| 依兰县| 江源县| 宝应县| 乌鲁木齐市| 治县。| 洞头县| 辽宁省| 紫阳县| 株洲县| 徐州市|