C# 在F中访问动态对象#

C# 在F中访问动态对象#,c#,linq,f#,dynamic-language-runtime,C#,Linq,F#,Dynamic Language Runtime,我正在参数化一些linq查询,最后使用了动态linq。起初,我在从它创建的动态对象中提取数据时遇到了一些困难,但我设法使用FSharp提取了数据。InteropDynamic,关于参数化linq查询的更好方法,我计划发布另一个问题。 我的问题是 这是访问动态linq和/或动态对象(内存和速度方面)的最佳方式吗 当我第一次使用它时,FSI给了我一个信息 将会话绑定到“..\..\packages\dynametiy.1.0.2.0\lib\net40\dynametiy.dll”… 这到底是什么

我正在参数化一些linq查询,最后使用了动态linq。起初,我在从它创建的动态对象中提取数据时遇到了一些困难,但我设法使用FSharp提取了数据。InteropDynamic,关于参数化linq查询的更好方法,我计划发布另一个问题。 我的问题是

  • 这是访问动态linq和/或动态对象(内存和速度方面)的最佳方式吗
  • 当我第一次使用它时,FSI给了我一个信息

    将会话绑定到“..\..\packages\dynametiy.1.0.2.0\lib\net40\dynametiy.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)]
    
    这将给我:
    valit:(string*int)list=[(“伦敦”,1029);(“伦敦”,90210)]
    如预期的那样

    这是使用F#中的动态对象的一个很好的概述:

    还有一个关于不同方法的问题: