C#如何将包含DateTime字段的List按日期字段转换为Dictionary
问题原因
你当前代码的分组逻辑使用了包含时分秒的完整DateTime值,示例里5个元素的Date字段时分秒都不相同,因此会被分为5个独立分组,不符合按年月日维度聚合的要求。
解决方法
分组时取DateTime结构的Date属性,该属性会自动截断时分秒,仅保留年月日部分,再通过ToDictionary方法直接生成目标字典结构,修改后的代码如下:
// 替换原来的var ss = ... 这一行即可 // 生成键为DateTime类型(仅含日期部分)、值为对应日期元素列表的字典 Dictionary<DateTime, List<CostDbDto>> dateGroupDict = costList .GroupBy(a => a.Date.Date) .ToDictionary(g => g.Key, g => g.ToList());
如果你需要字典的键为24/11这类字符串格式的日期,可以调整分组键的格式:
Dictionary<string, List<CostDbDto>> dateGroupDict = costList .GroupBy(a => a.Date.ToString("dd/MM")) .ToDictionary(g => g.Key, g => g.ToList());
内容的提问来源于stack exchange,提问作者user1817661
相关产品推荐
相关产品推荐

