Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

in f# match statement how do I match to the type byte[]?

Tags:

ado.net

f#

I'm trying to lookup DbType enumeration values from .net types. I'm using a match statement. However I cannot figure out how to match on the type byte[].

let dbType x =
  match x with
  | :? Int64 -> DbType.Int64
  | :? Byte[] -> DbType.Binary // this gives an error
  | _ -> DbType.Object

If there is a better way to map these types, I would be open to suggestions.

like image 804
Charles Lambert Avatar asked May 12 '11 21:05

Charles Lambert


People also ask

What temperature in Fahrenheit is 50 C?

Answer: 50° Celsius is equal to 122° Fahrenheit.


1 Answers

byte[], byte array, and array<byte> are all synonymous, but in this context only the last will work without parentheses:

let dbType (x:obj) =
    match x with
    | :? (byte[])     -> DbType.Binary
    | :? (byte array) -> DbType.Binary // equivalent to above
    | :? array<byte>  -> DbType.Binary // equivalent to above
    | :? int64        -> DbType.Int64
    | _               -> DbType.Object
like image 158
ildjarn Avatar answered Oct 21 '22 01:10

ildjarn