Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ根据时间戳对对象进行分组_C#_.net_Linq_Timestamp_Grouping - Fatal编程技术网

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))
如果您真的想将所有相同的小时/天/月映射到相同的组中,那么就更容易了