c# - EF Core 逻辑查询
问题描述
我有使用 EF Core 和 MVC 的 C# 项目。
我有一个代表“虚拟”实体的控制器。该实体是通过从两个不同的表中选择来创建的,按月和年汇总每个表,然后连接两个结果。
我的问题是:是否有可能(如果有,这是否是一个好的解决方案)用 EF Core 来计算?或者我应该只用 C# 遍历元素并按照我想要的方式聚合它们?
编辑:目前我正在做这个:
public IEnumerable<MyTable> Get...(int month, int year)
return _context.MyTable
//.Include(b => b.)
.Where(t => t.Month == month && t.Year == year)
.GroupBy(a => a.BrokerId)
.Select(param1 => new {
BrokerId = param1.Key,
TotalCommissionAmountBruto = param1.Sum(s => s.CommissionAmountBruto),
TotalCommissionAmountNeto = param1.Sum(s=>s.CommissionAmountNeto)
});
这会引发错误,因为查询的结果未格式化为MyTable
对象。我尝试为结果创建另一个视图模型,但没有成功(关于隐式转换的相同错误)
视图模型:
public class MyViewModel : DtoBase
{
public int brokerId { get; set; }
public int TotalCommissionAmountBruto { get; set; }
public int TotalCommissionAmountNeto { get; set; }
}
解决方案
有很多方法可以实现这一要求。如果表之间存在父子关系,则可以使用Include
和ThenInclude
。
您也可以使用方法运行存储过程FromSql
并选择所需的数据。
您还可以使用Select
扩展方法使用投影查询。
您可以参考微软提供的官方文档了解以上所有内容。
推荐阅读
- r - 如何从 Windows CMD 运行在文件路径中包含斜杠的 R 脚本?
- javascript - 使滚轮事件仅滚动一次
- linux - Kubernetes 和 Linux 之间的兼容性
- python - 警告:超出磁贴内存限制,使用 ChromeDriver Selenium 渲染长页面时,某些内容可能无法绘制并且无法捕获屏幕截图
- spring-boot - 终止使用 Kafka-Streams 和 MongoDB 的 Spring Boot 应用程序
- c# - 将 LINQ 中的两个列表与重复项进行比较
- typescript - 来自 Ant Design 的“转发”组件以便能够在组件库中使用它们会丢失类型定义
- amazon-web-services - EC2 中的十六进制到文本转换失败
- python - 如何在 Python 中创建字典元组
- wavesplatform - Waves 节点同步非常慢