在 F# 中设置 DataContext 的 DataLoadOptions

发布于 2024-10-24 23:11:31 字数 343 浏览 1 评论 0原文

是否可以在 F# 中的数据上下文上设置 DataLoadOptions ?到目前为止,我没有运气,因为 DataLoadOptions.LoadWith() 采用 System.Linq.Expressions.LambdaExpression 似乎不可能在 F# 中实例化

Is it possible to set the DataLoadOptions on a data context in F#? So far I have had no luck because the DataLoadOptions.LoadWith() takes a System.Linq.Expressions.LambdaExpression which seems impossible to instantiate in F#

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

相权↑美人 2024-10-31 23:11:31

我相信这应该是可能的。您需要引用 FSharp.PowerPack.Linq.dll,它添加了对翻译 F# 引号的支持(使用 <@ fun x -> x.Foo @> 编写) >) 到 C# 表达式树。像这样的事情应该可以解决问题:

#r @"FSharp.PowerPack.Linq.dll"

open System
open System.Linq.Expressions
open Microsoft.FSharp.Linq.QuotationEvaluation

let e = <@ Func<int, int>(fun x -> 1 + x) @>
let lambda = e.ToLinqExpression() :?> LambdaExpression 

请注意,引用创建了一个 Func<...> 委托,该委托被转换为可以转换为 LambdaExpression 的表达式树(普通 F# 函数的表示方式不同)。

I believe this should be possible. You'll need to reference FSharp.PowerPack.Linq.dll which adds support for translating F# quotations (written using <@ fun x -> x.Foo @>) to C# expression trees. Something like this should do the trick:

#r @"FSharp.PowerPack.Linq.dll"

open System
open System.Linq.Expressions
open Microsoft.FSharp.Linq.QuotationEvaluation

let e = <@ Func<int, int>(fun x -> 1 + x) @>
let lambda = e.ToLinqExpression() :?> LambdaExpression 

Note that the quotation creates a Func<...> delegate, which is translated to expression tree that can be converted to LambdaExpression (normal F# functions are represented differently).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文