LINQ 分组依据;如何使其灵活
LINQ Group by; How to make it flexible
考虑到底部的代码,这是我的问题:
我希望能够根据输入对收入进行分组,例如:
- 年
- 月
- 星期
- 单位
等等
我是否需要为每个组合制作一个 var(并相应地更改分组依据),或者我可以制作一些灵活的分组依据变量。这意味着我可以获得 input
级别的 LocationRevenue
例如:周、月或年;或年+月一起,周+月一起或任何其他组合。
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();
每次在 groupby
子句中添加新的 groupBy
select 并按 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 };
}
考虑到底部的代码,这是我的问题:
我希望能够根据输入对收入进行分组,例如: - 年 - 月 - 星期 - 单位 等等
我是否需要为每个组合制作一个 var(并相应地更改分组依据),或者我可以制作一些灵活的分组依据变量。这意味着我可以获得 input
级别的 LocationRevenue
例如:周、月或年;或年+月一起,周+月一起或任何其他组合。
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();
每次在 groupby
子句中添加新的 groupBy
select 并按 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 };
}