我使用的.NET框架允许在从C#调用时传递对象初始化器LINQ表达式:
db.UpdateAdd( () => new InvoiceAccount { Quantity = 3 } );
架构会使用参数中的运算式来侦测应该更新哪些字段。
有没有可能从F#构造相同的LINQ表达式?我尝试使用引号来模拟对象初始化器,但到目前为止没有任何成功。我尝试了以下示例:
let expr =
<@ fun () -> InvoiceAccount(Quantity = 3M) @>
|> LeafExpressionConverter.QuotationToExpression
|> unbox<Expression<Func<InvoiceAccount>>>
db.UpdateAdd<InvoiceAccount>( expr )
它编译时没有错误,但我得到以下运行时错误:
System.NotSupportedException:未能将以下F#引号转换为LINQ表达式树
顺序(顺序(值(),属性集(一些(返回值),数量,[调用(无,生成十进制,[值(3),值(0),值(0),值(假),值(0uy)])]),返回值)
第666行:第666行:第666行:第666行:第666行:第666行:第666行:第666行:第666行
1条答案
按热度按时间k97glaaz1#
这将构造一个等效表达式: