Table of contents
Collapse the table of content
Expand the table of content

Seq.distinctBy<'T,'Key> Function (F#)

Den Delimarsky|Last Updated: 7/25/2016
1 Contributor

Returns a sequence that contains no duplicate entries according to the generic hash and equality comparisons on the keys returned by the given key-generating function. If an element occurs multiple times in the sequence then the later occurrences are discarded.

Namespace/Module Path: Microsoft.FSharp.Collections.Seq

Assembly: FSharp.Core (in FSharp.Core.dll)


// Signature:
Seq.distinctBy : ('T -> 'Key) -> seq<'T> -> seq<'T> (requires equality)

// Usage:
Seq.distinctBy projection source


projection Type: 'T -> 'Key

A function that transforms the sequence items into comparable keys.

source Type: seq<'T>

The input sequence.


ArgumentNullExceptionThrown when the input sequence is null

Return Value

The result sequence.


This function is named DistinctBy in compiled assemblies. If you are accessing the function from a language other than F#, or through reflection, use this name.


The following example demonstrates the use of Seq.distinctBy to keep only the elements in a sequence that have a distinct absolute value. The first element with a given result is retained in the new sequence, so the positive numbers from 1 to 5 are dropped in the sequence from -5 to +10.

    let inputSequence = { -5 .. 10 }
    let printSeq seq1 = Seq.iter (printf "%A ") seq1; printfn ""
    printfn "Original sequence: "
    printSeq inputSequence
    printfn "\nSequence with distinct absolute values: "
    let seqDistinctAbsoluteValue = Seq.distinctBy (fun elem -> abs elem) inputSequence
    seqDistinctAbsoluteValue |> printSeq
Original sequence:
-5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10
Sequence with distinct absolute values:
-5 -4 -3 -2 -1 0 6 7 8 9 10


Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2

Version Information

F# Core Library Versions

Supported in: 2.0, 4.0, Portable

See Also

Collections.Seq Module (F#)

Microsoft.FSharp.Collections Namespace (F#)

© 2016 Microsoft