How do I iterate over a hashtable in F#? -


let dic = environment.getenvironmentvariables() dic |> seq.filter( fun k -> k.contains("comntools")) 

fails compile. i've tried using array.filter, seq.filter, list.filter i've tried getting dic.keys iterate on f# doesn't seem want me coerce keycollection ienumerable.

i've tried upcasting hashtable ienumerable<keyvaluepair<string,string>>

how walk hashtable returned environment.getenvironmentvariables() ?

since environment.getenvironmentvariables() returns non-generic idictionary , stores key/value pairs in dictionaryentry, have use seq.cast first:

let dic = environment.getenvironmentvariables()  dic |> seq.cast<dictionaryentry> |> seq.filter(fun entry -> entry.key.tostring().contains("comntools")) 

see relevant docs @ https://msdn.microsoft.com/en-us/library/system.collections.idictionary(v=vs.110).aspx. notice entry.key of type obj, 1 has convert string before checking string containment.

instead of using high-order functions, sequence expression might handy:

let dic = environment.getenvironmentvariables() seq {     entry in seq.cast<dictionaryentry> dic ->         (string entry.key), (string entry.value) } |> seq.filter(fun (k, _) -> k.contains("comntools")) 

Comments

Popular posts from this blog

javascript - AngularJS custom datepicker directive -

javascript - jQuery date picker - Disable dates after the selection from the first date picker -