Как получить динамический доступ к свойствам записи F#.Data.SqlClient

У меня есть некоторые данные Records возвращается через провайдера F# Data SqlClient Type, используя такой код:

    open FSharp.Data

    [<Literal>]
    let connectionString = "..."
    [<Literal>]
    let linksQuery = "SELECT Id, TheName, ... FROM Links"

    type LinksQuery = SqlCommandProvider<linksQuery, connectionString>

    let result = (new LinksQuery())
                        .AsyncExecute() 
                        |> Async.RunSynchronously

    let first = result.[0]

Теперь я хотел бы получить доступ к свойствам этого firstRecord динамически - какие свойства мне нужны, зависит от некоторого пользовательского ввода - они вводят key,

Я знаю, что могу сделать это с помощью отражения в стиле C# с помощью кода:

   let theType = first.GetType()
   let theProp = theType.GetProperty("Item")
   let theValue = theProp.GetValue(first,  [| key |])
   // now use `theValue` (which is sometimes a string and sometimes an Option(string)

Тем не менее, мне интересно, есть ли способ сделать это, используя более простой F#

В идеале я хотел бы использовать что-то вроде first.[key] - но это утверждение возвращает ошибку The field, constructor or member "Item" is not defined

0 ответов

Другие вопросы по тегам