シーケンスの最後の項目を除くすべてを取得する方法が必要でした。これは私の現在の実装です:
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