【问题标题】:Using Group By on Date Time field - Linq query在日期时间字段上使用分组依据 - Linq 查询
【发布时间】:2019-09-15 00:23:19
【问题描述】:

我正在尝试使用 Linq 查询根据 SQLServer 数据库中的 DateTime 字段进行分组。以下是我正在尝试的内容

        var result = _context.sRProject
                             .Where(x => x.r_Project == rep)
                             .GroupBy(x => new { x.s_Date }).ToList();
        return result;

这里的 s_Date 是 DB 中的 DateTime 字段。我在结果中收到以下错误,例如

不能隐式转换类型 'System.Collections.Generic.List,Model.sRProject>>' 到 'System.Collections.Generic.List'

我在模型类中有

    public class sRProject : IsRProject
  {
    public DateTime? s_Date { get; set; }
    public string delivery { get; set; }
    public DateTime? delDate { get; set; }
    public string po { get; set; }
    public string so { get; set; }
    public string r_Project { get; set; }
  }

我想要实现的 SQL 查询如下所示

   SELECT   [s_Date],[delivery],[delDate],[po],[so],[r_Project]
              FROM [sDev].[dbo].[PrjDetails] 
              where [r_Project] = @rep  
              group by [s_Date],[delivery],[delDate],[po],[so],[r_Project]

我在这里错过了什么?

【问题讨论】:

  • 目前还不清楚Model.sRProject 如何表示这些按日期分组的值。实际上,预先分组的集合似乎是Model.sRProject 类型,这让事情变得更加不清晰。通过使用GroupBy,您表示“我有多个具有相同日期的项目,我希望这些项目在每个日期的单独组/组中返回。”
  • @John 我不明白拒绝投票/结束问题的原因。因为我是新手,所以尝试了一些事情并伸出援手帮助检查可能是什么问题。我不知道我们必须更改模型,我将不得不对此进行研究
  • 投反对票的原因是您没有解释您希望在方法结束时如何格式化数据。我们不知道您的期望是什么,所以很难回答。既然你至少提供了你的模型(它有帮助),我已经删除了反对票,但仍然不清楚你想做什么。我提供了一个“最佳猜测”的答案,现在我要去吃饭了,所以暂时无法回复。我希望它有所帮助。
  • @John 我试图实现的 sql 查询已添加到问题中。我刚开始在 Linq 查询 GroupBY 中添加了 s_Date 并看到此错误,并停止在 groupBy 子句中添加更多内容。我不确定答案中的关键是什么
  • @John 分组的原因是我需要将 SUM(数量字段)添加到查询中。我只想一次做一步。我说的问题正确吗?

标签: c# entity-framework linq


【解决方案1】:

如下构建 LINQ 查询:

var result = _context.sRProject
                             .Where(x => x.r_Project == rep)
                             .GroupBy(x => new { x.s_Date }).Select(x=>new sRProject{s_Date =x.Key.s_Date, delivery =x.Key.delivery, delDate=x.Key.delDate, po =x.Key.po, so =x.Key.so, r_Project=x.Key.r_Project }).ToList();
        return result;

你的方法的返回类型应该是sRProject

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 2023-03-28
    • 1970-01-01
    • 2019-08-18
    • 1970-01-01
    相关资源
    最近更新 更多