91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
姜堰市| 麦盖提县| 台中县| 凤山县| 宝鸡市| 建瓯市| 青岛市| 丹东市| 平谷区| 安国市| 奇台县| 江孜县| 民县| 五原县| 河北省| 聂拉木县| 始兴县| 永兴县| 蚌埠市| 准格尔旗| 贡嘎县| 江陵县| 喀什市| 荆州市| 福泉市| 大化| 清河县| 濮阳县| 弥勒县| 金塔县| 合阳县| 龙胜| 定边县| 桑日县| 六枝特区| 礼泉县| 揭阳市| 琼海市| 永吉县| 外汇| 甘肃省|