@ s952163 बताते हैं, यह आप एक डेटाबेस से डेटा को पढ़ने के लिए जो मामले में वहाँ बेहतर विकल्प उपलब्ध यह अपने आप को ऐसा करने के लिए कोशिश कर रहा से कर रहे हैं प्रयास कर रहे हैं की तरह लग रहा है। फिर भी, ओपी को फेस वैल्यू पर ले जाने पर संभावित समाधान को स्केच करने के लिए, यहां इसके बारे में जाने का एक तरीका है।
सूचीबद्ध प्रकार के बाद से नेट प्रकार नहीं कर रहे हैं, शायद यह इस तरह मान धारण करने के लिए एक कस्टम प्रकार को परिभाषित करने के लिए बेहतर है:
open System
type DbType = NVarChar of string | DT of DateTime
आप DbType
के लिए और अधिक मामलों में जोड़ सकते हैं यदि आप चाहें तो।
active patterns का उपयोग करना, आप एक ही उम्मीदवार कन्वर्ट करने के लिए एक समारोह लिख सकते हैं:
// string * string -> string option
let (|NVarChar|_|) = function
| "nvarchar", (x : string) -> Some x
| _ -> None
// string * string -> DateTime option
let (|DT|_|) (typeHint, value) =
match (typeHint, DateTime.TryParse value) with
| "date", (true, dt) -> Some dt
| _ -> None
// string * string -> DbType option
let convertPair = function
| NVarChar x -> Some (NVarChar x)
| DT x -> Some (DT x)
| _ -> None
सक्रिय पैटर्न का उपयोग सख्त आवश्यक नहीं है, लेकिन मैं इसे से मुझे एक अच्छा तरीका में समस्या विघटित करने के लिए सोचा ।
अब आप प्रकार की एक सूची और मूल्यों में से एक घोषणा कर सकते हैं उन्हें एक साथ ज़िप व्याख्या मानों की सूची प्राप्त करने के लिए:
> let types = ["nvarchar"; "nvarchar"; "date"; "nvarchar"];;
val types : string list = ["nvarchar"; "nvarchar"; "date"; "nvarchar"]
> let values = ["Jackson"; "Sentzke"; "1991-04-19T00:00:00"; "Jackson Sentske"];;
val values : string list =
["Jackson"; "Sentzke"; "1991-04-19T00:00:00"; "Jackson Sentske"]
> let converted = List.zip types values |> List.choose convertPair;;
val converted : DbType list =
[NVarChar "Jackson"; NVarChar "Sentzke"; DT 19.04.1991 00:00:00;
NVarChar "Jackson Sentske"]
ध्यान दें कि types
और values
दोनों प्रकार string list
है। ओपी में, वे (string * string * string * string) list
थे, जो मुझे लगता है कि एक गलती थी।
स्रोत
2016-10-12 09:13:49
सबसे पहले, जाहिर है कि वे SQL कॉलम प्रकार हैं और .NET प्रकार नहीं हैं। दूसरा, आप वास्तव में विभिन्न प्रकार की एक सरणी नहीं कर सकते हैं। तीसरा, यही प्रदाता प्रदाता हैं, और एसक्यूएलप्रोवाइडर के पास निफ्टी है। मैपटो विधि जो यह करती है। आपको रिकॉर्ड की एक सरणी में इसे संग्रहीत करना चाहिए, और आपका जीवन बहुत आसान होगा। – s952163