如何将匿名类型传递给函数,然后获取值

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)

我想传递gbDropIncompleteQuarters,但我不确定type应该是什么。

然后在里面DropIncompleteQuarters,我想迭代一下items

Dmi*_*nko 5

我建议使用命名元组而不是匿名类型。通过轻微的语法更改 -(...)而不是{...}你可以把

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)