Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
400 views
in Technique[技术] by (71.8m points)

ado.net - in f# match statement how do I match to the type byte[]?

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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...