在列表中减去相邻的两个值C#

iJa*_*Jay 1 c#

有一个名为cardReaderHistory的列表.它包含有序时间的一些时间记录,如下所示,

InTime1
OutTime1
InTime2
OutTime2
InTime3
OutTime3
InTime4
OutTime4 .....此外..

我需要的是计算工作时间(OutTime1 - Intime1)+(OutTime1 - Intime1).....
double我怎么能在C#中做到这一点... ????

 double hr = ((outTime1 - inTime1)+(OutTime2 - Intime2)+...);  
Run Code Online (Sandbox Code Playgroud)

谢谢..可怜的初学者

dtb*_*dtb 7

您可以根据索引过滤输入序列,然后压缩两个序列:

var inTimes = source.Where((x, index) => index % 2 == 0);
var outTimes = source.Where((x, index) => index % 2 == 1);

var result = inTimes.Zip(outTimes, (inTime, outTime) => outTime - inTime).Sum();
Run Code Online (Sandbox Code Playgroud)

如果您不需要中间值,您也可以这样做:

var result = source.Select((x, index) => (index % 2 == 0) ? -x : x).Sum();
Run Code Online (Sandbox Code Playgroud)