c# - Linq查询以获取具有重复日期的两个日期之间的行并将它们分组
问题描述
我有一张SQL
这样的桌子。
╔════╦════════════════════════════════╦═════════╦══════════╗
║ Id ║ Date ║ Col3 ║ Col4 ║
╠════╬════════════════════════════════╬═════════╬══════════╣
║ 1 ║ 2018-10-30 00:00:00.0000000 ║ ....... ║ ........ ║
║ 2 ║ 2018-10-31 00:00:00.0000000 ║ ....... ║ ........ ║
║ 3 ║ 2018-10-30 00:00:00.0000000 ║ ....... ║ ........ ║
║ 4 ║ 2018-10-31 00:00:00.0000000 ║ ....... ║ ........ ║
║ 5 ║ 2018-11-01 00:00:00.0000000 ║ ....... ║ ........ ║
╚════╩════════════════════════════════╩═════════╩══════════╝
我想选择这些行,以便我指定开始日期和结束日期,并且响应的格式如下,如果我将开始日期指定为 2018-10-31 并将结束日期指定为 2018-10-30,
+----+--------------------------------+---------+----------+
| Id | Date | Col3 | Col4 |
+----+--------------------------------+---------+----------+
| 1 | 2018-10-30 00:00:00.0000000 | ....... | ........ |
| 2 | 2018-10-31 00:00:00.0000000 | ....... | ........ |
| 3 | 2018-10-30 00:00:00.0000000 | ....... | ........ |
| 4 | 2018-10-31 00:00:00.0000000 | ....... | ........ |
+----+--------------------------------+---------+----------+
我尝试使用以下内容,但它不返回任何内容。我不知道我的查询是否错误。
[HttpGet("GetClamped")]
public async Task<IActionResult> GetIntegration([FromQuery] string start, [FromQuery] string end)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
DateTime startDate = DateTime.ParseExact(start, "yyyy-mm-dd", System.Globalization.CultureInfo.InvariantCulture);
DateTime endDate = DateTime.ParseExact(start, "yyyy-mm-dd", System.Globalization.CultureInfo.InvariantCulture);
var integration = await _context.Integrations.FirstOrDefaultAsync(t => t.Date > startDate && t.Date < endDate);
if (integration == null)
{
return NotFound();
}
return Ok(integration);
}
如果我想将相似的日期组合在一起,我该怎么做?例如:
+----+--------------------------------+---------+----------+
| Id | Date | Col3 | Col4 |
+----+--------------------------------+---------+----------+
| 1 | 2018-10-30 00:00:00.0000000 | ....... | ........ |
| 3 | 2018-10-30 00:00:00.0000000 | ....... | ........ |
| 2 | 2018-10-31 00:00:00.0000000 | ....... | ........ |
| 4 | 2018-10-31 00:00:00.0000000 | ....... | ........ |
+----+--------------------------------+---------+----------+
先感谢您。
解决方案
出现 404 错误的原因有很多,即:
- 传递的参数格式无效,例如。yyyy-dd-mm 而不是 yyyy-mm-dd
- 上下文不使用数据连接到数据库或根本没有数据。尝试执行以下操作:
var integration = _context.Integrations.ToList();
要获得一系列项目,您不能使用该FirstOrDefaultAsync
功能。对于那个用途Where
为了对元素进行分组 - 还有另一个功能GroupBy
。您可以在此处找到更多功能:https ://msdn.microsoft.com/en-us/library/system.data.entity.queryableextensions(v=vs.113).aspx
推荐阅读
- python - 如何将 invoice2data 的输出保存到 bash 的文件中?
- c++ - 无法获取断言错误以打印到 console.log 错误:“class CBigNum”没有名为“SetCompact”的成员
- c# - filtering a linq query, based on the object created from each element in the linq query
- bash - 如何将命令的输出重定向到文件并并行管道到其他命令?
- .net-core - error: Unable to find package [packageName] as a dependency
- php - 尝试为 GPA 计划允许一系列数字(0.0 - 4.0)
- c# - 控制器如何处理 ASP.NET MVC 中的请求?
- javascript - 这是什么js模块
- c++ - 用于区分十进制和非十进制值的正则表达式
- python - VS Code move to next line on run ctrl + enter