2009-07-23 60 views
0

我想擴展我的webapp與IronPython,目前工作很好,但我似乎無法得到它與我的NHibernateLinq安裝很好地玩。IronPython與Linq拋出ArgumentTypeException

我正在做一個IQueryable的<案例>提供給IronPython的代碼,然後我使用LINQ的方法來過濾下來,如:

Enumerable.Where[object](data, Func[object, bool](func)) 

這工作得很好,但因爲我使用可枚舉,而不是可查詢,它是從數據庫中拉了回來所有的記錄,對他們的運行功能之前,當我想在哪裏被添加到所產生的SQL查詢子句NHibernate的。

所以,我想:

Queryable.Where[object](data, Func[object, bool](func)) 

但是,僅僅產生:

Microsoft.Scripting.ArgumentTypeException: expected IQueryable[object], got Query[Case] 

我缺少的東西?這甚至有可能嗎?

安東尼

回答

1

通用不變是基本上導致你的問題。一個Func<object, bool>不可自由兌換的Func<Case,bool> - 至少是在.NET 4.0

注意Queryable.Where將需要一個表達式樹,而不是委託。 IronPython是否支持表達式樹?

如果你能在Python產生一個表達式樹,你能使它Expression<Func<Case,bool>>代替Expression<Func<Object,bool>>?如果可以的話,那應該可以使它工作。

+0

我對此有點奇怪。找不到支持表達式樹的IronPython的任何證據,所以我轉而使用HQL而不是Linq。乾杯。 – littlecharva 2009-07-23 13:24:17