iT邦幫忙

1

如何使用linq將日期以月/年分組

  • 分享至 

  • xImage

請問, 我有一個資料結構是 SortedDictionary<DateTime, double>
我想裏面的資料照"月份"或"年份"分組, 然後將value加總.
不知道該怎麼做比較好!?
目前只會一筆一筆拿出來計算.
可以用linq語法(或其它方法)簡化嗎?
謝謝~

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

7
deh
iT邦研究生 1 級 ‧ 2023-03-04 20:28:26
最佳解答

按月份分組加總

以下是按月份分組加總的範例程式碼:

var monthlySum = dict.GroupBy(x => new DateTime(x.Key.Year, x.Key.Month, 1))
                     .Select(g => new { Month = g.Key, Sum = g.Sum(x => x.Value) });

該程式碼會將 SortedDictionary 按月份分組,並計算每個月份的 value 總和。結果會儲存在一個匿名型別的集合中,其中 Month 欄位表示月份,Sum 欄位表示該月份的 value 總和。

按年份分組加總

以下是按年份分組加總的範例程式碼:

var yearlySum = dict.GroupBy(x => new DateTime(x.Key.Year, 1, 1))
                    .Select(g => new { Year = g.Key.Year, Sum = g.Sum(x => x.Value) });

該程式碼會將 SortedDictionary 按年份分組,並計算每個年份的 value 總和。結果會儲存在一個匿名型別的集合中,其中 Year 欄位表示年份,Sum 欄位表示該年份的 value 總和。

我要發表回答

立即登入回答