Tango
  • Introduction
  • Getting Started
    • Summary
    • From me, the Developer
    • What is Tango?
    • Where to start?
  • Installation
    • Based on NuGet
    • Manually
  • Fundamentals
    • Introduction
    • Using Pattern Matching
    • Option values
    • Either values
    • From void to Unit
    • Func and Action
    • Chainable operations in a Continuation flow
    • Currying and Partial Application
  • Functional
    • Introduction
    • Currying
    • Partial Application
    • Functional Extensions
    • QuickCast to Delegates
  • Operations
    • Introduction
    • Operations with Booleans
    • Operations with Integers
    • Operations with Decimals
    • Operations with Doubles
    • Operations with Strings
  • Types
    • Introduction
    • Unit
    • Option<T>
    • Either<TLeft, TRight>
    • Continuation<TFail, TSuccess>
  • Modules
    • Introduction
    • Option
      • Apply
      • AsEnumerable
      • Bind
      • Count
      • Exists
      • Filter
      • Fold
      • FoldBack
      • Iterate
      • Map
      • OfNullable
      • ToArray
      • ToList
      • ToNullable
    • Either
      • Exists
      • Iterate
      • Fold
      • FoldBack
      • Map
      • Swap
      • ToTuple
    • Continuation
      • AsContinuation
      • Resolve
      • Reject
      • All
    • Collection
      • Append
      • Choose
      • ChunkBySize
      • Collect
      • CompareWith
      • CountBy
      • Concat
      • Distinct
      • Empty
      • Exists
      • Exists2
      • Filter
      • FindIndex
      • Fold
      • Fold2
      • FoldBack
      • FoldBack2
      • ForAll
      • ForAll2
      • ForAll3
      • Head
      • HeadAndTailEnd
      • Range
      • Generate
      • Initialize
      • Iterate
      • Iterate2
      • IterateIndexed
      • IterateIndexed2
      • Map
      • Map2
      • Map3
      • MapIndexed
      • MapIndexed2
      • MapIndexed3
      • Partition
      • Permute
      • Pick
      • Reduce
      • ReduceBack
      • Replicate
      • Scan
      • Scan2
      • ScanBack
      • ScanBack2
      • Tail
      • TryFind
      • TryPick
      • Unzip
      • Unzip3
      • Zip
      • Zip3
  • Extensions
    • Introduction
    • Enum Extensions
    • EqualityComparer Builder
    • Modules as Extensions
Powered by GitBook
On this page

Was this helpful?

  1. Modules
  2. Collection

ForAll2

PreviousForAllNextForAll3

Last updated 5 years ago

Was this helpful?

Tests if all corresponding elements of the collection satisfy the given predicate pairwise.

If any application returns false then the overall result is false and no further elements are tested. Otherwise, true is returned.

WARNING

This function causes evaluation.

Parameters

Returns

Func<T, T2, bool> predicate

IEnumerable<T> source

IEnumerable<T2> source2

bool

Usage

Verifying that all values in both collections are even numbers

//IEnumerable<int> source =  { 2, 4, 6, 8, 10 }
//IEnumerable<int> source2 = { 4, 2 }

bool result = 
    source.ForAll2(
        source2, 
        (element1, element2) => element1 % 2 == 0
                             && element2 % 2 == 0);

//result = true
//IEnumerable<int> source =  { 2, 4, 6, 8, 10 }
//IEnumerable<int> source2 = { 4, 2, 10, 12, 16 }

bool result = 
    source.ForAll2(
        source2, 
        (element1, element2) => element1 % 2 == 0
                             && element2 % 2 == 0);

//result = true

Creating an true result even when one of the collections contains an odd number

It is necessary to be careful, different sized collections can create situations like this one:

//IEnumerable<int> source =  { 2, 4, 6, 8, 10 }
//IEnumerable<int> source2 = { 4, 2, 10, 12, 16, 1 }

bool result = 
    source.ForAll2(
        source2, 
        (element1, element2) => element1 % 2 == 0
                             && element2 % 2 == 0);

//result = true

The result was true because of the loop runs only until the smallest collection length, therefore, the last element of source2 never was checked.

IEnumerable<T>