表示linq查询或c#中的小时数的3个数字之和

本文关键字:3个 数字 小时 表示 查询 linq | 更新日期: 2023-09-27 18:12:53

我有一列的花费时间值为(10.30,1.45…(我想把这些数字加起来,得到总共花费的小时数。示例:

值11.11,0.50,0.59

花费的总小时11和分钟的总和(11+50+59(=120分钟=2小时

所以我的最终输出应该是11+2=13.00小时

但在我的c#查询中,我得到了11.11+0.50+0.59=12.2,这是错误的,因为我认为它是小时格式。

如何在不拆分数字的情况下在13.00小时内得到结果。

我尝试过:

db.myTable.Where(t => t.is_deleted == false).Sum(t => t.time_spent)

这给了我12.2,但我想要13.00,因为我认为这是时间

编辑:

我使用

List<string> hoursTemp1 = Model.tblName.Where(t => t.is_deleted == false).Select(p => p.time_spent.ToString()).ToList();
    var total_effort_hr = new TimeSpan(hoursTemp1.Sum(x => TimeSpan.ParseExact(x, "h''.mm", System.Globalization.CultureInfo.InvariantCulture).Ticks)).ToString(@"hh':mm");

但现在我正在获得OverflowException,因为小时值大于24,分钟值大于60

所以有人能帮我解决这个错误并得到正确的结果吗?任何帮助都将被感激。

表示linq查询或c#中的小时数的3个数字之和

        var times = new string[] { "11.11", "0.50", "0.59" };
        var totalTime = new TimeSpan(times.Sum(x => TimeSpan.ParseExact(x, "h''.mm", CultureInfo.InvariantCulture).Ticks));
        Console.WriteLine(totalTime); //13:00:00
public decimal GetHours(IEnumerable<decimal> args)
{
   return args.Sum(x=> Math.Truncate(x) + (x-Math.Truncate(x))*100/60);
}

或者使用一个截断:

public decimal GetHours(IEnumerable<decimal> args)
{
   return args.Sum(x=> (5*x-2*Math.Truncate(x))/3);
}

但说真的,我会为这样的约会时间处理而裁员。几乎每个数据库都有表示日期、时间或两者兼有的类型。为什么不使用它们来避免这种垃圾呢?