C# List如何實現分組功能

一、分組簡介

在實際開發中,我們經常會遇到需要將數據按照某個規則進行分組的情況,比如根據學校進行成績排名、根據省份進行廣告投放等等。如果使用傳統的方式,可能需要編寫很多繁瑣冗長的代碼。而C#的List類提供了很方便的分組功能,可以大大簡化我們的開發流程。

二、分組實現

1、根據單個屬性分組

在List中,我們可以使用GroupBy方法進行分組,傳入一個lambda表達式作為分組依據,以下是根據一個Person類中的Age屬性進行分組的示例代碼:

List persons = new List();
//添加數據
var groups = persons.GroupBy(p => p.Age);
foreach (var group in groups)
{
    Console.WriteLine("Age Group: " + group.Key);
    foreach (var person in group)
    {
        Console.WriteLine("\t" + person.Name);
    }
}

上面的示例代碼中,Age屬性作為分組依據,GroupBy方法返回的是一個以Age為鍵、以Person列表為值的字典。

2、根據多個屬性分組

如果需要根據多個屬性進行分組,可以在lambda表達式中使用匿名類型作為分組依據,以下是根據一個Person類中的Age和Gender屬性進行分組的示例代碼:

List persons = new List();
//添加數據
var groups = persons.GroupBy(p => new { p.Age, p.Gender });
foreach (var group in groups)
{
    Console.WriteLine("Age and Gender Group: " + group.Key.Age + ", " + group.Key.Gender);
    foreach (var person in group)
    {
        Console.WriteLine("\t" + person.Name);
    }
}

上面的示例代碼中,使用了一個包含Age和Gender屬性的匿名類型作為分組依據,GroupBy方法返回的是一個以該匿名類型為鍵、以Person列表為值的字典。

3、根據簡單對象分組

除了基本類型和匿名類型外,我們還可以使用自定義類型進行分組。只需要讓自定義類型實現IEqualityComparer接口並重寫Equals和GetHashCode方法即可。以下是根據一個自定義的Student類進行分組的示例代碼:

public class Student
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string Province { get; set; }
 
    public class GroupComparer : IEqualityComparer
    {
        public bool Equals(Student x, Student y)
        {
            return x.Province.Equals(y.Province);
        }
 
        public int GetHashCode(Student obj)
        {
            return obj.Province.GetHashCode();
        }
    }
}
 
List students = new List();
//添加數據
var groups = students.GroupBy(s => s, new Student.GroupComparer());
foreach (var group in groups)
{
    Console.WriteLine("Province Group: " + group.Key.Province);
    foreach (var student in group)
    {
        Console.WriteLine("\t" + student.Name);
    }
}

三、小結

以上就是C# List實現分組功能的三種方法,分別根據單個屬性分組、根據多個屬性分組以及根據自定義類型進行分組。使用這些方法可以很方便地對數據進行分類統計和分析。在實際開發中,我們需要靈活運用這些方法,根據不同的需求來選擇合適的分組方式。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/244347.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:01
下一篇 2024-12-12 13:01

相關推薦

  • Tensor to List的使用

    Tensor to List是TensorFlow框架提供的一個非常有用的函數,在很多的深度學習模型中都會用到。它的主要功能是將TensorFlow中的張量(Tensor)轉換為P…

    編程 2025-04-29
  • 如何實現圖像粘貼到蒙版

    本文將從多個方面介紹圖像粘貼到蒙版的實現方法。 一、創建蒙版 首先,在HTML中創建一個蒙版元素,用於接收要粘貼的圖片。 <div id=”mask” style=”widt…

    編程 2025-04-29
  • Java和Python哪個功能更好

    對於Java和Python這兩種編程語言,究竟哪一種更好?這個問題並沒有一個簡單的答案。下面我將從多個方面來對Java和Python進行比較,幫助讀者了解它們的優勢和劣勢,以便選擇…

    編程 2025-04-29
  • Django ORM如何實現或的條件查詢

    在我們使用Django進行數據庫操作的時候,查詢條件往往不止一個,一個好的查詢語句需要考慮我們的查詢要求以及業務場景。在實際工作中,我們經常需要使用或的條件進行查詢,本文將詳細介紹…

    編程 2025-04-29
  • Python一次性輸入10個數如何實現?

    Python提供了多種方法進行輸入,可以手動逐個輸入,也可以一次性輸入多個數。在需要輸入大量數據時,一次性輸入十個數就非常方便。下面我們從多個方面來講解如何一次性輸入10個數。 一…

    編程 2025-04-28
  • 如何使用Python將輸出值賦值給List

    對標題進行精確、簡明的解答:本文將從多個方面詳細介紹Python如何將輸出的值賦值給List。我們將分步驟進行探討,以便讀者更好地理解。 一、變量類型 在介紹如何將輸出的值賦值給L…

    編程 2025-04-28
  • Python每次運行變量加一:實現計數器功能

    Python編程語言中,每次執行程序都需要定義變量,而在實際開發中常常需要對變量進行計數或者累加操作,這時就需要了解如何在Python中實現計數器功能。本文將從以下幾個方面詳細講解…

    編程 2025-04-28
  • Python strip()函數的功能和用法用法介紹

    Python的strip()函數用於刪除字符串開頭和結尾的空格,包括\n、\t等字符。本篇文章將從用法、功能以及與其他函數的比較等多個方面對strip()函數進行詳細講解。 一、基…

    編程 2025-04-28
  • Python List查找用法介紹

    在Python中,list是最常用的數據結構之一。在很多場景中,我們需要對list進行查找、篩選等操作。本文將從多個方面對Python List的查找方法進行詳細的闡述,包括基本查…

    編程 2025-04-28
  • 如何實現van-picker點擊遮罩不關閉

    van-picker是一個非常實用的Vue組件,但默認情況下,點擊遮罩會自動關閉選擇器。本文將介紹如何通過代碼實現van-picker點擊遮罩不關閉的功能。 一、通過覆蓋遮罩實現 …

    編程 2025-04-27

發表回復

登錄後才能評論