我需要一种方法来给我除了序列中的最后一项之外的所有内容。这是我目前的实现:
public static IEnumerable<T> SkipLast<T>(this IEnumerable<T> source)
{
using (IEnumerator<T> iterator = source.GetEnumerator())
{
if(iterator.MoveNext())
while(true)
{
var current = iterator.Current;
if(!iterator.MoveNext())
yield break;
yield return current;
}
}
}
我需要它对除最后一个之外的所有项目做一些事情。就我而言,我有一系列具有各种属性的对象。然后我按日期订购它们,然后我需要对所有它们进行调整,除了最近的项目(这将是订购后的最后一个项目)。
问题是,我还不太喜欢这些枚举器和其他东西,也没有人在这里问:p 我想知道这是否是一个好的实现,或者我是否在某个地方犯了一个小错误或大错误。或者,如果这个问题是一个奇怪的问题,等等。
我想更通用的实现可能是一种AllExceptMaxBy
方法。因为这就是它的样子。MoreLinq有一个and方法,我的方法需要做同样的事情,但返回除最大值或最小值之外的每个项目。MaxBy
MinBy