It turns out that when many mechanisms exist to do a task, many things will work. Here is another way to handle the Seq.fold task from yesterday in a much cleaner way. It’s still neat to see all these workable options! Seq has another method, filter, which only returns those elements that return true for the supplied function.

#light

open System.Collections.Generic

type MyType(propA:string, propB:int) =

member this.PropA = propA

member this.PropB = propB

override this.ToString() = System.String.Format(“{0} {1}”, this.PropA, this.PropB)

let typeSeq =

[|  new MyType(“red”, 4);

new MyType(“red”, 3);

new MyType(“blue”, 3);

new MyType(“blue”, 4);

new MyType(“blue”, 5);

|]

let filterVals theSeq propAValue =

theSeq |> Seq.filter(fun (a:MyType) -> a.PropA = propAValue)

printfn(“%A”) (filterVals typeSeq “red”)

printfn(“%A”) (filterVals typeSeq “blue”)