public void Select_SourceIsArray_Last() { var source = new[] { 1, 2, 3, 4 }.Select(i => i * 2); Assert.Equal(8, source.Last()); Assert.Equal(8, source.LastOrDefault()); Assert.Equal(6, source.Take(3).Last()); Assert.Equal(6, source.Take(3).LastOrDefault()); var empty = new int[0].Select(i => i * 2); Assert.Throws<InvalidOperationException>(() => empty.Last()); Assert.Equal(0, empty.LastOrDefault()); Assert.Throws<InvalidOperationException>(() => empty.Skip(1).Last()); Assert.Equal(0, empty.Skip(1).LastOrDefault()); }