Доступ к динамическим объектам в F#
Я параметризовал некоторые запросы linq и в итоге использовал динамический linq. Сначала у меня были некоторые проблемы с извлечением данных из динамических объектов, которые он создал, но мне удалось извлечь их с помощью FSharp. InteropDynamic, относительно лучшего способа параметризации linq-запросов, я планирую опубликовать еще один вопрос. Мой вопрос
- Это лучший способ получить доступ к динамическим linq и / или динамическим объектам (память и скорость?).
Когда я впервые использую его, FSI дает мне сообщение.
Binding session to '..\..\packages\Dynamitey.1.0.2.0\lib\net40\Dynamitey.dll'...
Что это такое?
Упрощенный код:
#if INTERACTIVE
#r "System.Data.Linq.dll"
#r @"..\packages\System.Linq.Dynamic.1.0.6\lib\net4\System.Linq.Dynamic.dll"
#r @"..\packages\FSharp.Interop.Dynamic.3.0.0.0\lib\portable-net45+sl50+win\FSharp.Interop.Dynamic.dll"
#r @"..\packages\Dynamitey.1.0.2.0\lib\net40\Dynamitey.dll"
#endif
open System.Linq
open System.Linq.Dynamic
open FSharp.Interop.Dynamic
type Rec1 = {
City:string
Country:string
Zip:int
}
let x = [{City="London";Country="UK";Zip=1029};{City="Glasgow";Country="UK";Zip=30921};
{City="London";Country="USA";Zip=90210}]
let y = x.Where(fun x -> x.City ="London").Select("new(City,Zip)")
[for xx in y -> (xx?City:string),(xx?Zip:int)]
Это даст мне: val it : (string * int) list = [("London", 1029); ("London", 90210)]
как и ожидалось.
Это хороший обзор использования динамических объектов из F#: F# динамический доступ к объектам