带有Linq的IronPython抛出ArgumentTypeException
我正试图用IronPython扩展我的Web应用程序,到目前为止,IronPython运行得非常好,但我似乎无法让它与我的NHibernatelink设置配合得很好 我正在为IronPython代码提供一个IQueryable,然后使用Linq方法对其进行过滤,例如:带有Linq的IronPython抛出ArgumentTypeException,linq,nhibernate,ironpython,Linq,Nhibernate,Ironpython,我正试图用IronPython扩展我的Web应用程序,到目前为止,IronPython运行得非常好,但我似乎无法让它与我的NHibernatelink设置配合得很好 我正在为IronPython代码提供一个IQueryable,然后使用Linq方法对其进行过滤,例如: Enumerable.Where[object](data, Func[object, bool](func)) 这很好,但是因为我使用的是Enumerable而不是Queryable,所以在运行Where函数之前,当我希望将W
Enumerable.Where[object](data, Func[object, bool](func))
这很好,但是因为我使用的是Enumerable而不是Queryable,所以在运行Where函数之前,当我希望将Where子句添加到NHibernate生成的SQL查询中时,它会从数据库中提取所有记录
所以我试着:
Queryable.Where[object](data, Func[object, bool](func))
但这只会产生:
Microsoft.Scripting.ArgumentTypeException: expected IQueryable[object], got Query[Case]
我错过什么了吗?这可能吗
安东尼基本上,通用不变性会给你带来问题。
Func
不能转换为Func
——至少在.NET 4.0之前是这样
请注意,Queryable.Where
需要表达式树,而不是委托。IronPython支持表达式树吗
如果可以用Python生成表达式树,是否可以将其改为
expression
而不是expression
?如果可以的话,这应该会奏效。我确实有点想知道这一点。找不到任何IronPython支持表达式树的证据,所以我改用HQL而不是Linq。干杯