Files
archived-discord-bot/CompatBot/Utils/EnumerableExtensions.cs
13xforever 44ed8f656b warn stats
2019-02-15 00:13:19 +05:00

40 lines
1.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
namespace CompatBot.Utils
{
public static class EnumerableExtensions
{
public static IEnumerable<TResult> Pairwise<T, TResult>(this IEnumerable<T> source, Func<T, T, TResult> selector)
{
if (source == null)
throw new ArgumentNullException(nameof(source));
if (selector == null)
throw new ArgumentNullException(nameof(selector));
using (var e = source.GetEnumerator())
{
if (!e.MoveNext())
yield break;
T prev = e.Current;
if (!e.MoveNext())
yield break;
do
{
yield return selector(prev, e.Current);
prev = e.Current;
} while (e.MoveNext());
}
}
public static IEnumerable<T> Single<T>(T item)
{
yield return item;
}
}
}