LINQ集团由;如何使其灵活

时间:2017-07-06 09:00:15

标签: c# linq linq-group

考虑到底部的代码,这是我的问题:

我希望能够根据输入对收入进行分组,例如: - 年 - 月 - 周 - 单位 等。

我是否需要为每个组合创建一个var(并相应地更改Group),或者我可以创建一个变量Group灵活的组合。这意味着我可以在LocationRevenue级别获得input,例如:周,月或年;或年+月,周+月或任何其他组合。

var locationRevenues = revenues
.GroupBy(g => new { Location = g.Location, Month = DateTimeHelper.GetMonth(g.Date)})
.Select(r => new
{
    Location = r.Key,
    RevenueTotal = r.Sum(i => i.RevenueAmount),

})
.ToList();

1 个答案:

答案 0 :(得分:-1)

每次添加新的groupBy选择groupby内部条款并按Ctrl + R + M并生成新方法。您可以将其作为参数传递。

Do(Func<TSource, TKey>)

var locationRevenues = revenues
                .GroupBy(Func())
                .Select(r => new
                {
                    Location = r.Key,
                    RevenueTotal = r.Sum(i => i.RevenueAmount),

                })
                .ToList();


private static Func<Revenues, object> Func()
{
    return g => new { Location = g.Location, Month = 9 };
}