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

Asp.Net中如何使用Entity Framework按日期分组查询数据?

问题原因
  • 你的现有查询返回的是List<IGrouping<DateTime?, 匿名类型>>集合,直接在视图渲染时,框架会默认调用该类型的ToString()方法,最终输出你截图中看到的类名字符串,而非预期的日期数据。
  • 查询逻辑存在冗余:你先投影出仅包含DateInYear的匿名类再分组,属于不必要的操作,额外增加了查询开销。
解决方案

分两种常用场景选择对应实现:

场景1:仅需获取所有去重的非空日期

如果你的需求只是拿到所有不重复的日期值,不需要分组聚合数据,直接用Distinct即可:

var AllDates = db.Crops_Cert
    .Where(n => n.DateInYear != null)
    .Select(g => g.DateInYear.Value)
    .Distinct()
    .ToList();

该查询返回List<DateTime>类型的集合,视图遍历时直接输出每个元素即可得到日期值。

场景2:需要按日期分组做聚合统计

如果你需要统计每个日期对应的数据条数、求和等聚合结果,需要将分组后的键和聚合结果显式投影出来:

var AllDates = db.Crops_Cert
    .Where(n => n.DateInYear != null)
    .GroupBy(w => w.DateInYear)
    .Select(g => new 
    {
        日期 = g.Key.Value,
        数据条数 = g.Count()
        // 可在此处添加其他聚合逻辑
    })
    .ToList();

视图遍历的时候直接取对应属性值展示即可。

补充说明

如果你的业务允许DateInYear后续可能存在空值,投影时可以保留可空类型,视图渲染前做判空处理即可,避免运行时报空引用异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:09:03