gpt4 book ai didi

c# - C# 中时间跨度的总和

转载 作者:IT王子 更新时间:2023-10-29 03:56:39 24 4
gpt4 key购买 nike

我有一个包含 TimeSpan 变量的对象集合:

MyObject
{
TimeSpan TheDuration { get; set; }
}

我想使用 LINQ 对这些时间求和。当然,(从 MyCollection 中的 r 选择 r.TheDuration).Sum();不起作用!

我正在考虑将 TheDuration 的数据类型更改为 int,然后对其求和并将总和转换为 TimeSpan。这会很麻烦,因为我收藏中的每个 TheDuration 都在其他地方用作时间跨度。

对这个总结有什么建议吗?

最佳答案

不幸的是,没有重载 Sum接受 IEnumerable<TimeSpan> .此外,目前没有为类型参数指定基于运算符的通用约束的方法,所以即使 TimeSpan是“ native ”可求和的,这一事实不能通过通用代码轻易获得。

如您所说,一个选择是对时间跨度等价的整数类型求和,然后将那个总和变成TimeSpan再次。理想的属性是 TimeSpan.Ticks , 往返准确。但是根本没有必要更改类的属性类型;你可以投影:

var totalSpan = new TimeSpan(myCollection.Sum(r => r.TheDuration.Ticks));

或者,如果您想坚持使用 TimeSpan 的 +运算符进行求和,您可以使用 Aggregate运算符(operator):

var totalSpan = myCollection.Aggregate
(TimeSpan.Zero,
(sumSoFar, nextMyObject) => sumSoFar + nextMyObject.TheDuration);

关于c# - C# 中时间跨度的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4703046/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com