c# - 基于日期的两个表的计数
问题描述
我有两个表 寄存器和IAApplications如下
寄存器
Name Email Creationdate
Mazhar Khan@gmail.com 2018-09-02 13:08:32.303
mohan m@gmail.com 2018-09-01 13:08:32.303
kjdj k@gmail.com 2018-09-01 13:08:32.303
IAApplications
Title Sector SubmissionDate
kk jj 2018-09-03 13:08:32.303
kk jj 2018-09-02 13:08:32.303
mm tt 2018-09-01 13:08:32.303
我的报告需要以下输出
Date New Registratio New Application
09-03-2018 0 1
09-02-2018 1 1
09-01-2018 2 1
我试过下面的代码得到错误的数据
var Regs = from o in db.Registers
select new { A = (o.Creationdate) };
var Apps = from c in db.IAApplications
select new { A = (c.SubmissionDate) };
var result = (from x in Regs.Concat(Apps)
group x by x.A into og
select new { Date = og.Key, Reg = og.Count(), App = og.Count() }).ToList();
在我的本地系统中,我得到了错误的结果,如下图所示,我有很多数据,但没有提到上表问题。
我知道我的查询中有一些错误,这就是为什么日期没有显示分组依据和数据计数的原因
解决方案
通常,您必须有过滤器dateStart
和dateEnd
然后,对于该范围内的每个日期,您检查在给定日期是否有注册或申请
var dateStart = new DateTime(2018,9,1);
var dateEnd = DateTime.Now;
var list = new List<Tuple<DateTime, int, int>>(); // structure to store DateTime, New Registratio, New Application
for(var i = dateStart; i.Date <= dateEnd.Date; i = i.AddDay(1))
{
list.Add(Tuple.Create(i,
db.Registers.Count(r => r.Creationdate.Date == i.Date),
db.IAApplications.Count(r => r.SubmissionDate.Date == i.Date)));
}
var result = list.Select(og => new { Date = og.Item1, Reg = og.Item2, App = og.Item3 }).ToList();
如果您没有预定义dateStart
,dateEnd
这些值来自min/max
2 个表
推荐阅读
- python - 使用 tkinter 发出请求的工作方式与终端不同
- android - xml android指南约束布局
- python - 传输时 FTP 无传输超时 - Python ftplib
- javascript - Zoom 使用什么弹出框?
- java - 在Java中的两个字符之间添加空格
- php - 如何使用 PHP 显示从 MySQSL 数据库中获取的更多文本
- java - 如何在eclipse中调用在其他文件上创建的数组?
- python - Python Pydot如何旋转边缘标签
- c++ - 将所有未知的方法调用和属性使用转发到 C++ 中的特殊函数
- ruby-on-rails - 部署到 Heroku 时出现 Rails rake 问题