表示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
所以有人能帮我解决这个错误并得到正确的结果吗?任何帮助都将被感激。
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);
}
但说真的,我会为这样的约会时间处理而裁员。几乎每个数据库都有表示日期、时间或两者兼有的类型。为什么不使用它们来避免这种垃圾呢?