Iva*_*van 2 c# grouping dynamic anonymous-types
我有一个function这样的:
private void DropIncompleteQuarters(//what goes in here? This? IEnumerable<dynamic> gb)
{
    foreach(var groupInGb in gb)
    {
        // What goes in here to get each element?
    }
}
Run Code Online (Sandbox Code Playgroud)
我正在生成Grouping这样的:
histData = new List<OHLC>();
var gb = histData.GroupBy(o => new
{
    Year = o.Date.Year,
    Quarter = ((o.Date.Month - 1) / 3) + 1
})
.ToDictionary(g => g.Key, g => g.ToList());
Run Code Online (Sandbox Code Playgroud)
我想传递gb给DropIncompleteQuarters,但我不确定type应该是什么。
然后在里面DropIncompleteQuarters,我想迭代一下items?
我建议使用命名元组而不是匿名类型。通过轻微的语法更改 -(...)而不是{...}你可以把
private void DropIncompleteQuarters(Dictionary<(int Year, int Quarter), 
                                               List<OHLC>> gb)
{
    foreach (var pair in gb)
    {
        // Let's deconstruct pair.Key 
        var (year, quarter) = pair.Key; 
        var list = pair.Value;
        //TODO: some logic for year and quarter and list
    }
}
Run Code Online (Sandbox Code Playgroud)
histData = new List<OHLC>();
var gb = histData
   .GroupBy(o => ( // change { .. } to ( .. ) and `=` to `:`
      Year    : o.Date.Year,
      Quarter : ((o.Date.Month - 1) / 3) + 1
   ))
   .ToDictionary(g => g.Key, g => g.ToList());
Run Code Online (Sandbox Code Playgroud)