6
我已經運行對NHibernate的以下C#
LINQ
查詢:F#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
。我被困在這一點上。
爲什麼不使用'c.FIELD.GetValueOrDefault()'或'c.FIELD.Value'? –
因爲它們被翻譯成Expression.Invoke而不是Expression.Convert,並且NHibernate需要Expression.Convert – emperon
如果它可以在Nullable上處理'(int)'強制轉換但不是'.Value',那麼這是NHibernate中的一個錯誤LINQ實現。 –