public static T Single <T>(this IEnumerable <T> items, Func <T, bool> predicate, Action noMatchAction, Action multipleMatchAction) { predicate.ArgumentNullCheck(nameof(predicate)); noMatchAction.ArgumentNullCheck(nameof(noMatchAction)); multipleMatchAction.ArgumentNullCheck(nameof(multipleMatchAction)); var matches = items.ArgumentNullCheck(nameof(items)).Where(predicate); var count = 0; var firstMatch = default(T); foreach (var match in matches) { if (++count == 1) { firstMatch = match; } if (count > 1) { multipleMatchAction(); break; } } if (count == 0) { noMatchAction(); } return(firstMatch); }
public ResponseStream(Func<ArraySegment<byte>, Action, bool> onNext, Action onComplete) { onNext.ArgumentNullCheck("onNext"); onComplete.ArgumentNullCheck("onComplete"); this.onNext = onNext; this.onComplete = onComplete; }