C# LINQ根据时间戳对对象进行分组
我有一系列对象定义为:C# LINQ根据时间戳对对象进行分组,c#,.net,linq,timestamp,grouping,C#,.net,Linq,Timestamp,Grouping,我有一系列对象定义为: public class Foo { public DateTime Time {get;set;} } 现在我想根据时间对对象进行分组(IEnumerable),例如,我想根据小时、天或月对它们进行分组 例如(按小时分组): 如何在上面写LINQ?希望我能说清楚。小时是日期时间的属性,所以它应该简单到: fooList.GroupBy(f => f.Hour) 这将为您提供一个i分组对象,其中int键是hour。hour是DateTime
public class Foo
{
public DateTime Time {get;set;}
}
现在我想根据时间对对象进行分组(IEnumerable
),例如,我想根据小时、天或月对它们进行分组
例如(按小时分组):
如何在上面写LINQ?希望我能说清楚。小时是日期时间的属性,所以它应该简单到:
fooList.GroupBy(f => f.Hour)
这将为您提供一个
i分组
对象,其中int键是hour。hour是DateTime的一个属性,因此它应该非常简单:
fooList.GroupBy(f => f.Hour)
这将为您提供一个
i分组
对象,其中int键是小时。下面是一个使用查询表达式的示例
public class Foo
{
public int FooID { get; set; }
public DateTime FooDate { get; set; }
}
下面是一个使用查询表达式的示例
public class Foo
{
public int FooID { get; set; }
public DateTime FooDate { get; set; }
}
如果您不想将昨天的13-14小时与今天的13-14小时分组,也不想将本月5日与上月5日分组等,那么您需要执行以下操作:-
// splitting time up into hour intervals
fooList.GroupBy(f => f.Time.Date.AddHours(f.Time.Hour))
// splitting time up into day intervals
fooList.GroupBy(f => f.Time.Date)
// splitting time up into month intervals
fooList.GroupBy(f => f.Time.Date.AddDays(-f.Time.Day))
如果你真的想把所有相同的时间/天/月都映射到同一个组中,那就容易多了。如果你不想把昨天的13-14小时和今天的13-14小时,也不想把本月的5号和上月的5号等分组,那么你就需要做如下事情:-
// splitting time up into hour intervals
fooList.GroupBy(f => f.Time.Date.AddHours(f.Time.Hour))
// splitting time up into day intervals
fooList.GroupBy(f => f.Time.Date)
// splitting time up into month intervals
fooList.GroupBy(f => f.Time.Date.AddDays(-f.Time.Day))
如果您真的想将所有相同的小时/天/月映射到相同的组中,那么就更容易了