我有针对nhibernate运行的以下C#
LINQ
查询:
var items = new int[] { 1,2};
var c11 = session.Query<Parent>()
.Where(p => p.Children.Any(c => items.Contains((int)c.FIELD))).ToList();
在这种情况下,c.FIELD
是Nullable<int>
,当我检查 IL 代码时,转换为int转换为Expression.Convert
如何翻译此F#
,因为F#
我无法将Nullable<int>
转换为int
。我只能调用op_Explicit但是转换为不同于Expression.Convert
的表达式。我被困在这一点上。
答案 0 :(得分:0)
您正在寻找的是Operators.int<^T> Function
将参数转换为带符号的32位整数。这是所有原始数字类型的直接转换。对于字符串,使用Parse和InvariantCulture设置转换输入。否则,操作需要在输入类型上使用适当的静态转换方法。
query { for parent in session.Query<Parent>() do
where (parent.Children.Any (fun c -> items.Contains (int c.FIELD)))
select parent }