首頁 > 後端開發 > C++ > LINQ 如何有效率地將資料分組並統計出現次數?

LINQ 如何有效率地將資料分組並統計出現次數?

Mary-Kate Olsen
發布: 2025-01-22 00:46:10
原創
646 人瀏覽過

How Can LINQ Group Data and Count Occurrences Efficiently?

利用LINQ高效率分組與計數資料

C#中的LINQ(語言整合查詢)提供了一種強大的方法來操作和查詢資料。在需要分組和計數資料集的情況下,LINQ提供了一個簡潔且有效率的解決方案。

假設我們有一個包含使用者及其相關指標和日期的資料集:

<code>UserInfo(姓名, 指标, 日期, 其他指标)

数据:
joe  1 2011/01/01 5
jane 0 2011/01/02 9
john 2 2011/01/03 0
jim  3 2011/01/04 1
jean 1 2011/01/05 3
jill 2 2011/01/06 5
jeb  0 2011/01/07 3
jenn 0 2011/01/08 7</code>
登入後複製

我們的目標是取得一個表格,依指標順序(0, 1, 2, 3...)分組,並顯示每個指標出現的總次數。

使用LINQ進行分組和計數

使用LINQ來達成此目標,我們可以使用'GroupBy'和'Select'方法:

<code>foreach(var line in data.GroupBy(info => info.metric)
                        .Select(group => new { 
                             Metric = group.Key, 
                             Count = group.Count() 
                        })
                        .OrderBy(x => x.Metric))
{
     Console.WriteLine("{0} {1}", line.Metric, line.Count);
}</code>
登入後複製

說明:

  1. 'GroupBy'方法應用於資料集,根據'metric'屬性進行分組。這將產生一系列群組,每個群組包含具有相同'metric'值的元素。
  2. 'Select'方法用於將每個群組投影到新的匿名物件中,該物件具有兩個屬性:'Metric'(群組的鍵)和'Count'(群組中元素的數量)。
  3. 'OrderBy'方法以升序將匿名物件排序,排序依據是'Metric'。
  4. 結果是一個匿名物件的序列,每個物件代表一個指標及其計數。

輸出:

<code>0 3
1 2
2 2
3 1</code>
登入後複製

另一種方法

雖然提供的LINQ解決方案效率很高,但可以進一步簡化:

<code>var result = data.GroupBy(info => info.metric)
                 .Select(group => new { 
                      Metric = group.Key, 
                      Count = group.Count() 
                 })
                 .OrderBy(x => x.Metric);</code>
登入後複製

這裡的唯一區別是,我們沒有使用'foreach'循環迭代結果,而是將其賦值給名為'result'的變數。

關鍵點

  • GroupBy() 建立一個群組的序列。
  • Select() 將一個群組投影到一個匿名物件。
  • Count() 傳回群組中元素的數量。
  • OrderBy() 依指定的屬性對結果進行排序。

以上是LINQ 如何有效率地將資料分組並統計出現次數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板