我需要按记录日期对某些数据进行分组,计算字段tipoEscola中值的出现次数,此字段的值可以是1或2,并且我还需要该分组日期的记录总数和tipoEscola的每个值。对不起,我知道这有点令人困惑,所以我将使用我拥有的数据显示它....
这些是我的数据库的一些记录:
nome email tipoEscola dataCadastro
teste1 email@email.com 2 2015-07-16 10:29:34.140
teste1 email@email.com 1 2015-07-16 10:29:34.140
teste2 email@email.com 2 2015-07-16 10:31:55.337
teste3 email@email.com 2 2015-07-16 12:38:22.403
teste4 email@teste.com 1 2015-07-17 13:33:26.973
teste5 teste@teste.com 2 2015-07-17 13:49:13.850
这是我到目前为止所做的事情:
[0] { Data = {16/07/2015 10:29:34}, Tipo = 2, Qntd = 1 }
[1] { Data = {16/07/2015 10:29:34}, Tipo = 1, Qntd = 1 }
[2] { Data = {16/07/2015 10:31:55}, Tipo = 2, Qntd = 1 }
[3] { Data = {16/07/2015 12:38:22}, Tipo = 2, Qntd = 1 }
[4] { Data = {17/07/2015 13:33:26}, Tipo = 1, Qntd = 1 }
[5] { Data = {17/07/2015 13:49:13}, Tipo = 2, Qntd = 1 }
但这就是我想要实现的目标:
[0] { Data = {16/07/2015}, Tipo1 = 1, Tipo2 = 3, Qntd = 4 }
[1] { Data = {17/07/2015}, Tipo1 = 1, Tipo2 = 1, Qntd = 2 }
这是我用来分组的代码:
var leadsPorTipo = db.Lead_SejaEscola.Where(x => EntityFunctions.TruncateTime(x.dataCadastro) >= dataInicio && EntityFunctions.TruncateTime(x.dataCadastro) <= dataFim)
.GroupBy(n => new { n.dataCadastro, n.tipoEscola })
.Select(n => new { Data = n.Key.dataCadastro, Tipo = n.Key.tipoEscola, Qntd = n.Count() });
这是我用来格式化日期的代码:
var chartData = leadsPorTipo.AsEnumerable()
.Select(x => new {
data = x.Data.ToString("dd/MM/yy"),
tipo = x.Tipo,
quantidade = x.Qntd });
谢谢!
答案 0 :(得分:1)
您可以尝试以下方法吗?
var leadsPorTipo =
db.Lead_SejaEscola.Select(x => new { Data = EntityFunctions.TruncateTime(x.dataCadastro),
Tipo = x.tipoEscola })
.Where(x => x.Data >= dataInicio && x.Data <= dataFim)
.GroupBy(x => x.Data)
.Select(g => new { Data = g.Key,
Tipo1 = g.Where(x => x.Tipo == 1).Count(),
Tipo2 = g.Where(x => x.Tipo == 2).Count(),
Qntd = g.Count() })
.ToList()