Trust me . 2023-09-26 16:56 采纳率: 0%
浏览 7

C# linq分组后汇总时间差问题

C# linq 问题:分组后汇总时间差 报错 求救


var resutl= from a in t_HaltRd
                        group a by new { a.Id } into f
                        select new
                        {
                            f.Key.Id,
                            HaltCount = f.Count(),
                            HaltTimeSum = f.Sum(p => (p.EndTime - p.StartTime).TotalMinutes),
                        }; 
  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-09-26 17:16
    关注

    该回复引自免费微信小程序-皆我百晓生:


    您好!根据您提供的代码,我注意到您在计算HaltTimeSum时遇到了问题。根据错误信息,我猜测您可能遇到了类型转换错误。

    在LINQ查询中,使用(p.EndTime - p.StartTime)计算时间差会返回一个TimeSpan对象。要获取时间差的分钟数,您需要使用TimeSpan.TotalMinutes属性。但是,TotalMinutes属性返回的是一个double类型的值,而您的HaltTimeSum属性的类型可能是int或其他整数类型。

    为了解决这个问题,您可以将TotalMinutes属性的返回值转换为整数类型。您可以使用Convert.ToInt32方法或(int)强制转换来实现。下面是修改后的代码示例:

    var resutl= from a in t_HaltRd
                group a by new { a.Id } into f
                select new
                {
                    f.Key.Id,
                    HaltCount = f.Count(),
                    HaltTimeSum = Convert.ToInt32(f.Sum(p => (p.EndTime - p.StartTime).TotalMinutes)),
                };
    

    请注意,根据您的需求,您可能需要根据具体情况进行适当的类型转换。如果HaltTimeSum属性的类型是double或decimal,您可以直接使用TotalMinutes属性的返回值,而无需进行类型转换。

    希望这可以帮助到您!如果您有任何其他问题,请随时提问。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月26日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见