I found that Linq’s ZIP is really great for adjacent item computations.

For example, let’s have a collection of dates:

var dates = new DateTime[]
{
    new DateTime(2000,1,1),
    new DateTime(2000,1,2),
    new DateTime(2000,1,5)
};

How would you compute time difference of adjacent items ?

I like to use Zip for this kind of job:

dates.Zip(dates.Skip(1), (d1, d2) => d2 - d1);

As you might expect, the result will be: { 1 day, 3 days }