You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.Net Core中IQueryable求和结果异常问题排查与解决

ASP.NET Core 数据求和异常问题排查与解决

问题背景

我们的ASP.NET Core解决方案基于SQL数据库,其中Thing对象可关联0至多个Item,每个Item记录对应类型的数量。需求是对指定Item类型的数量求和并返回至View,但实际求和结果与预期不符。

现有代码

控制器中的IQueryable定义

IQueryable<Item> items = _context.Items
                    .Include(ep=>ep.ItemType)
                    .Include(ep=>ep.ItemActionType)
                    .Include(ep=>ep.Thing)
                    .AsQueryable();

求和查询代码

int itemsum = (int)items.Where(ep => ep.ItemTypeId == 2 && ep.ItemActionTypeId == 8).Select(ep => ep.ItemQuantity).Sum();

数据情况

数据库中符合过滤条件(ItemTypeId=2且ItemActionTypeId=8)的条目如下:

Id ThingId ItemTypeId ItemActionTypeId ItemQuantity
1 100 2 8 2
2 100 2 8 1
3 103 2 8 1
4 103 2 8 1
5 105 2 8 1

理论求和结果应为6,但实际返回值为3。

解决方案

在IQueryable定义之后、求和操作之前,添加基于Thing对象日期范围的过滤逻辑,代码如下:

items = items.Where(e => e.Thing.ThingDateTime >= searchThings.FromDateTime
                 && e.Thing.ThingDateTime <= searchThings.ToDateTime);

添加该过滤条件后,求和操作结果恢复正常。


内容的提问来源于stack exchange,提问作者jimd12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 19:10:27