36 lines
970 B
C#
36 lines
970 B
C#
namespace PkmnLib.Static.Utils;
|
|
|
|
/// <summary>
|
|
/// Extension methods for <see cref="IEnumerable{T}"/>.
|
|
/// </summary>
|
|
public static class EnumerableHelpers
|
|
{
|
|
/// <summary>
|
|
/// Returns all elements of the enumerable that are not null.
|
|
/// </summary>
|
|
public static IEnumerable<T> WhereNotNull<T>(this IEnumerable<T?> enumerable) where T : class =>
|
|
enumerable.Where(x => x is not null)!;
|
|
|
|
/// <summary>
|
|
/// Finds the index of a value in an enumerable. Returns -1 if the value is not found.
|
|
/// </summary>
|
|
public static int IndexOf<T>(this IEnumerable<T> enumerable, T value)
|
|
{
|
|
var index = 0;
|
|
foreach (var item in enumerable)
|
|
{
|
|
if (item is null)
|
|
{
|
|
if (value is null)
|
|
return index;
|
|
continue;
|
|
}
|
|
if (item.Equals(value))
|
|
return index;
|
|
|
|
index++;
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
} |