public static int?FindFirstIndex(this TextRow row, Func <string, bool> predicate) { for (var i = 0; i < row.Count; i++) { if (predicate(row[i])) { return(i); } } return(null); }
// Method to find index of fields matching a condition public static IEnumerable <int> FindIndex(this TextRow row, Func <string, bool> predicate) => row.Find((s, i) => predicate(s) is bool matched && matched
// Methods that get the index of first match; otherwise return null public static int?FindFirstIndex(this TextRow row, string sought) => row.FindFirstIndex(sought, StringComparison.Ordinal);
public static int?FindFirstIndex(this TextRow row, string sought, StringComparison comparison) => row.FindFirstIndex(s => string.Equals(s, sought, comparison));
public static int GetFirstIndex(this TextRow row, Func <string, bool> predicate) => row.FindFirstIndex(predicate) is int i ? i : throw new InvalidOperationException("Sequence contains no elements.");