最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#集合根據(jù)對象的某個屬性進行去重的代碼示例

 更新時間:2024年03月18日 10:33:35   作者:周杰倫fans  
當根據(jù)對象的Name屬性進行去重時,你可以使用以下三種方法:使用Distinct方法和自定義比較器、使用LINQ的GroupBy方法,以及使用HashSet,下面給大家介紹C#集合根據(jù)對象的某個屬性進行去重的代碼示例,感興趣的朋友一起看看吧

當根據(jù)對象的Name屬性進行去重時,你可以使用以下三種方法:使用Distinct方法和自定義比較器、使用LINQ的GroupBy方法,以及使用HashSet。下面是每種方法的詳細代碼示例和解釋:

1.使用Distinct方法和自定義比較器:

using System;
using System.Collections.Generic;
using System.Linq;
// 自定義對象類
public class Person
{
    public string Name { get; set; }
}
// 自定義比較器類
public class NameEqualityComparer : IEqualityComparer<Person>
{
    public bool Equals(Person x, Person y)
    {
        return x.Name == y.Name;
    }
    public int GetHashCode(Person obj)
    {
        return obj.Name.GetHashCode();
    }
}
public class Program
{
    public static void Main()
    {
        // 創(chuàng)建包含重復對象的集合
        List<Person> people = new List<Person>()
        {
            new Person { Name = "John" },
            new Person { Name = "Jane" },
            new Person { Name = "John" },
            new Person { Name = "Alice" },
            new Person { Name = "Jane" }
        };
        // 使用Distinct方法和自定義比較器進行去重
        List<Person> distinctPeople = people.Distinct(new NameEqualityComparer()).ToList();
        // 輸出去重后的結果
        foreach (Person person in distinctPeople)
        {
            Console.WriteLine(person.Name);
        }
    }
}

解釋:

  • 在上述代碼中,我們首先定義了一個Person類,具有Name屬性作為去重的依據(jù)。
  • 然后,我們創(chuàng)建了一個包含重復對象的List<Person>集合。
  • 接下來,我們定義了一個名為NameEqualityComparer的自定義比較器類,實現(xiàn)了IEqualityComparer<Person>接口。
  • 在自定義比較器類中,我們重寫了Equals方法和GetHashCode方法,分別根據(jù)Person對象的Name屬性進行比較和哈希計算。
  • 在主程序中,我們使用Distinct方法,并將自定義比較器作為參數(shù)傳遞給該方法,以實現(xiàn)根據(jù)Name屬性進行去重的功能。
  • 最后,我們將去重后的結果轉換為List<Person>類型,并逐個輸出去重后的Person對象的Name屬性。

2.使用LINQ的GroupBy方法:

using System;
using System.Collections.Generic;
using System.Linq;
// 自定義對象類
public class Person
{
    public string Name { get; set; }
}
public class Program
{
    public static void Main()
    {
        // 創(chuàng)建包含重復對象的集合
        List<Person> people = new List<Person>()
        {
            new Person { Name = "John" },
            new Person { Name = "Jane" },
            new Person { Name = "John" },
            new Person { Name = "Alice" },
            new Person { Name = "Jane" }
        };
        // 使用GroupBy方法根據(jù)Name屬性進行分組,并選擇每個分組的第一個對象
        List<Person> distinctPeople = people.GroupBy(p => p.Name).Select(g => g.First()).ToList();
        // 輸出去重后的結果
        foreach (Person person in distinctPeople)
        {
            Console.WriteLine(person.Name);
        }
    }
}

解釋:

  • 在上述代碼中,我們定義了一個Person類,具有Name屬性作為去重的依據(jù)。
  • 然后,我們創(chuàng)建了一個包含重復對象的List<Person>集合。
  • 接下來,我們使用GroupBy方法根據(jù)Name屬性進行分組。這將返回一個IEnumerable<IGrouping<string, Person>>,其中每個分組具有一個鍵(Name屬性的值)和相應的對象集合。
  • 然后,我們使用Select方法選擇每個分組的第一個對象,以實現(xiàn)去重的效果。
  • 最后,我們將去重后的結果轉換為List<Person>類型,并逐個輸出去重后的Person對象的Name屬性。

3.使用HashSet:

using System;
using System.Collections.Generic;
// 自定義對象類
public class Person
{
    public string Name { get; set; }
}
public class Program
{
    public static void Main()
    {
        // 創(chuàng)建包含重在C#中,你可以使用以下幾種方法根據(jù)對象的Name屬性對集合進行去重:
1. 使用Distinct方法和自定義比較器:
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
public class Person
{
    public string Name { get; set; }
}
public class NameEqualityComparer : IEqualityComparer<Person>
{
    public bool Equals(Person x, Person y)
    {
        return x.Name == y.Name;
    }
    public int GetHashCode(Person obj)
    {
        return obj.Name.GetHashCode();
    }
}
public class Program
{
    public static void Main()
    {
        List<Person> people = new List<Person>()
        {
            new Person { Name = "John" },
            new Person { Name = "Jane" },
            new Person { Name = "John" },
            new Person { Name = "Alice" },
            new Person { Name = "Jane" }
        };
        List<Person> distinctPeople = people.Distinct(new NameEqualityComparer()).ToList();
        foreach (Person person in distinctPeople)
        {
            Console.WriteLine(person.Name);
        }
    }
}

在上面的代碼中,我們定義了一個Person類,其中包含一個Name屬性用于去重。然后,我們創(chuàng)建了一個包含重復對象的List集合。接下來,我們定義了一個NameEqualityComparer類,實現(xiàn)了IEqualityComparer接口,其中Equals方法用于比較Name屬性是否相等,GetHashCode方法用于獲取Name屬性的哈希碼。在主程序中,我們使用Distinct方法,并將自定義的比較器作為參數(shù)傳遞給Distinct方法,以實現(xiàn)根據(jù)Name屬性進行去重的功能。最后,我們將去重后的結果轉換為List類型,并遍歷輸出每個人物的Name屬性。

4.使用LINQ的GroupBy方法:

using System;
using System.Collections.Generic;
using System.Linq;
public class Person
{
    public string Name { get; set; }
}
public class Program
{
    public static void Main()
    {
        List<Person> people = new List<Person>()
        {
            new Person { Name = "John" },
            new Person { Name = "Jane" },
            new Person { Name = "John" },
            new Person { Name = "Alice" },
            new Person { Name = "Jane" }
        };
        List<Person> distinctPeople = people.GroupBy(p => p.Name).Select(g => g.First()).ToList();
        foreach (Person person in distinctPeople)
        {
            Console.WriteLine(person.Name);
        }
    }
}

在上面的代碼中,我們同樣定義了一個Person類,并創(chuàng)建了一個包含重復對象的List集合。然后,我們使用GroupBy方法根據(jù)Name屬性進行分組,將相同Name屬性的對象放入同一個組中。接著,我們使用Select方法選擇每個組中的第一個對象,以實現(xiàn)去重的效果。最后,我們將去重后的結果轉換為List類型,并遍歷輸出每個人物的Name屬性。

5.使用HashSet:

using System;
using System.Collections.Generic;
public class Person
{
    public string Name { get; set; }
}
public class Program
{
    public static void Main()
    {
        List<Person> people = new List<Person>()
        {
            new Person { Name = "John" },
            new Person { Name = "Jane" },
            new Person { Name = "John" },
            new Person { Name = "Alice" },
            new Person { Name = "Jane" }
        };
        HashSet<Person> distinctPeople = new HashSet<Person>(people, new NameEqualityComparer());
        foreach (Person person in distinctPeople)
        {
            Console.WriteLine(person.Name);
        }
    }
}

在上面的代碼中,我們同樣定義了一個Person類,并創(chuàng)建了一個包含重復對象的List集合。然后,我們使用HashSet類,并將List集合和自定義的比較器傳遞給HashSet的構造函數(shù),以實現(xiàn)根據(jù)Name屬性進行去重的功能。最后,我們遍歷輸出去重后的結果。

到此這篇關于C#集合根據(jù)對象的某個屬性進行去重的文章就介紹到這了,更多相關C#根據(jù)對象的某個屬性去重內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

湟源县| 永顺县| 固阳县| 翁牛特旗| 东城区| 高州市| 青龙| 潜山县| 岢岚县| 民县| 阿尔山市| 旅游| 秦安县| 龙海市| 诸城市| 光山县| 二连浩特市| 泊头市| 娱乐| 祁阳县| 蒙山县| 禹城市| 汝阳县| 富裕县| 都匀市| 荆州市| 金湖县| 江山市| 彭阳县| 襄樊市| 仁布县| 潜山县| 宜昌市| 东城区| 化州市| 宣化县| 沂源县| 清水县| 凌海市| 襄城县| 峡江县|