C# 使用Linq按月份分组统计数据的查询修改方案
解决方案
核心修改逻辑为调整Linq的分组键,将原来的完整GORUSME_TARİH字段替换为按年+月维度分组,同时直接统计分组内的记录总数赋值给CVCOUNT即可,修改后的完整代码如下:
public class CVExcelMulakatList { public string CV_STATU { get; set; } public string GORUSMETARIHI { get; set; } public string YAKADURUMU { get; set; } public int CVCOUNT { get; set; } } public ActionResult GetMulakatList(List<int> idList) { MULAKATDBEntities1 db = new MULAKATDBEntities1(); idList = idList.OrderByDescending(p => p).Take(750).ToList(); List<string> list = new List<string>() {"Olumsuz", "Olumlu", "Beklemede"}; var mulakatList = (from e in db.CV // 可选:如果面试日期可能为空,可新增过滤条件避免报错 // where e.GORUSME_TARİH != null where list.Contains(e.CV_STATU) && idList.Contains(e.ID_CV) // 修改分组键:按状态、年月、YAKADURUMU三个维度分组 group e by new { e.CV_STATU, e.YAKADURUMU, e.GORUSME_TARİH.Year, e.GORUSME_TARİH.Month } into gcs select new CVExcelMulakatList { CV_STATU = gcs.Key.CV_STATU, YAKADURUMU = gcs.Key.YAKADURUMU, // 格式化输出为 年-月 格式,可根据需要调整展示格式 GORUSMETARIHI = $"{gcs.Key.Year}-{gcs.Key.Month:D2}", // 统计分组内总记录数 CVCOUNT = gcs.Count() }).ToList(); // 后续接导出Excel的逻辑即可 return ...; }
如果不需要区分年份,仅需要按1-12月合并统计所有年份同月份的数据,直接删除分组键里的Year字段即可。
内容的提问来源于stack exchange,提问作者Hakan özel
相关产品推荐
相关产品推荐

