使用 IEnumerable 方法,对列表的第一个和第二个元素执行操作,然后对第二个和第三个元素执行操作,依此类推,返回



>假设我有一个 IEnumerable,我想得到第一个和第二个元素之间的差值,然后是第二个和第三个,第三个和第四个元素,等等,并得到一个 IEnumerable 回来,元素数量少一个。

我知道如何非常轻松地使用 foreach 循环执行此操作(跳过第一个元素,并存储对前一个元素的引用(,但是我很好奇是否有办法在 C# 中使用默认情况下使用 IEnumerable 类似 Linq 的语句来做到这一点。

如果我理解正确,那么您可以将Zip.Skip(1)一起使用:

var en = Enumerable.Range(0,5).ToList();
var result = en.Zip(en.Skip(1))
.Select(t => t.First - t.Second)
.ToList(); // results in list with {-1, -1, -1, -1}

相关内容

最新更新