2011-04-02 58 views
1

我有一个具有DateTime属性的类的集合,我想获得分钟和秒的总和。有没有简单的方法来使用LINQ来做到这一点,而无需手动总结分钟和秒钟?如何使用LINQ找到DateTime的总和

+1

我@StephenChung同意。这些Linq示例可能也会帮助你: neontapir 2011-04-02 13:52:15

回答

7

我想你的意思是TimeSpan而不是DateTime?您不能添加日期时间的...

综上所述时间跨度的:

  1. list.Sum(跨度=> span.TotalSeconds)==>总秒数

  2. TimeSpan.FromSeconds(。 ..)==>转换总秒回时间跨度

然后可以使用性质时间跨度重新格式化回时,分,秒等

+6

这样做的单线程方法不需要通过int来实现, 'Aggregate'函数就像这样:'list.Aggregate((sum,next)=> sum + next)'。您从该方法中获得的'TimeSpan'将成为列表中所有'TimeSpan'的总和。 – Alex 2011-04-02 14:05:02

+0

布拉沃在制作这一个班轮。 +1 – 2011-04-03 03:18:45

3

斯蒂芬的答案+1。

只是为了好玩......如果你真的想“得到分钟和秒的总和”,则:

class MyClass 
{ 
    public DateTime DateTimeMember {get;set;} 
    // other stuff 
} 


var myObjects = new List<MyClass>(); 

// fill list... 

// 3 possible things you might be interested in 
var myMinuteSum = myObjects.Sum(x => x.DateTimeMember.Minute); 
var mySecondSum = myObjects.Sum(x => x.DateTimeMember.Second);  
var myOddTotalOfMinutesAndSecondsInSeconds = myObjects.Sum(x => x.DateTimeMember.Minute * 60 + x.DateTimeMember.Second);