C#如何将类对象的Date与Prices属性转为Dictionary<DateTime, Double>
你之前尝试的写法错误原因是没有为ToDictionary方法传入正确的键选择器、值选择器两个参数,正确实现方式如下:
如果你的results.values集合中所有volresult对象的Date值不存在重复,直接使用以下代码即可完成转换:
var datePriceDict = results.values.ToDictionary(x => x.Date, x => x.Prices);
这个写法里,第一个lambda表达式x => x.Date指定字典的键取每个元素的Date属性,第二个lambda表达式x => x.Prices指定字典的值取对应元素的Prices属性,生成的对象就是你需要的Dictionary<DateTime, double>类型。
如果存在多个volresult对象对应同一个Date的场景,直接调用ToDictionary会抛出键重复的异常,你可以先按日期分组后再处理,示例如下:
- 保留同日期下第一个出现的Prices值:
var datePriceDict = results.values .GroupBy(x => x.Date) .ToDictionary(g => g.Key, g => g.First().Prices);
- 对同日期的所有Prices值求和后作为值:
var datePriceDict = results.values .GroupBy(x => x.Date) .ToDictionary(g => g.Key, g => g.Sum(x => x.Prices));
内容的提问来源于stack exchange,提问作者V1ct0r 6l0r1eux
相关产品推荐
相关产品推荐

