.net 按小时和类型划分的LINQ组(点击/打开比率)
我有一个包含以下字段的表:.net 按小时和类型划分的LINQ组(点击/打开比率),.net,linq,.net,Linq,我有一个包含以下字段的表: 操作=>单击/打开 DateTime=>日期和时间操作 发生 例如: 动作|日期时间 点击2010年12月3日凌晨3:00 单击2010年12月3日凌晨3:12 开放时间:2010年12月3日凌晨3:34 点击2010年12月3日上午4:12 单击2010年3月13日下午1:12 等等 我需要按小时对这些文件进行分组,这样我每小时都会有大量的点击和打开 我该怎么做? 谢谢您可以使用lambda执行此操作 var data = new[]
谢谢您可以使用lambda执行此操作
var data = new[]
{
new { Actn = "click", tm = "3/12/2010 3:00AM" },
new { Actn = "click" , tm = "3/12/2010 3:12AM"},
new { Actn = "open" , tm = "3/12/2010 3:34AM"},
new { Actn = "click" , tm = "3/12/2010 4:12AM"},
new { Actn = "click" , tm = "3/13/2010 1:12PM"}
};
var groupby = data.GroupBy(r => new { Convert.ToDateTime(r.tm).Hour, r.Actn });
foreach (var group in groupby)
{
Console.WriteLine("{0} = {1}", group.Key, group.Count());
}
您可以使用lambda来执行此操作
var data = new[]
{
new { Actn = "click", tm = "3/12/2010 3:00AM" },
new { Actn = "click" , tm = "3/12/2010 3:12AM"},
new { Actn = "open" , tm = "3/12/2010 3:34AM"},
new { Actn = "click" , tm = "3/12/2010 4:12AM"},
new { Actn = "click" , tm = "3/13/2010 1:12PM"}
};
var groupby = data.GroupBy(r => new { Convert.ToDateTime(r.tm).Hour, r.Actn });
foreach (var group in groupby)
{
Console.WriteLine("{0} = {1}", group.Key, group.Count());
}
输出:
2 - Click - 3
1 - Open - 3
1 - Click - 4
1 - Click - 13
这就是你要找的
输出:
2 - Click - 3
1 - Open - 3
1 - Click - 4
1 - Click - 13
这就是你要找的吗?我是这样解决的:
List<MySummary> summary =
entries.Select(i => new { i, dt = i.Date }).GroupBy(
@t => new { date = @t.dt.Date, time = @t.dt.Hour }, @t => @t.i).Select(
g =>
new MySummary()
{
Date = g.Key.date.AddHours(g.Key.time),
Opens = g.Count(x => x.Type == "Open"),
Clicks = g.Count(x => x.Type == "Click")
}).ToList();
我是这样解决的:
List<MySummary> summary =
entries.Select(i => new { i, dt = i.Date }).GroupBy(
@t => new { date = @t.dt.Date, time = @t.dt.Hour }, @t => @t.i).Select(
g =>
new MySummary()
{
Date = g.Key.date.AddHours(g.Key.time),
Opens = g.Count(x => x.Type == "Open"),
Clicks = g.Count(x => x.Type == "Click")
}).ToList();
小心,尽管我不确定,但我认为s.time.hour分组返回的是每天3点而不是每天每小时的分组。小心,尽管我不确定,但我认为s.time.hour分组返回的是每天3点而不是每天每小时的分组。