I found that Linq’s ZIP is really great for adjacent item computations.
For example, let’s have a collection of dates:
1: var dates = new DateTime[]
2: {
3: new DateTime(2000,1,1),
4: new DateTime(2000,1,2),
5: new DateTime(2000,1,5)
6: };
How would you compute time difference of adjacent items ?
I like to use Zip for this kind of job:
1: dates.Zip(dates.Skip(1), (d1, d2) => d2 - d1);
As you might expect, the result will be: { 1 day, 3 days }