2009-07-23 1 views
0

IronPythonを使用してwebappを拡張しようとしていますが、これは今までのところうまく機能していますが、NHibernateLinqの設定でうまくいくとは思えません。IronPythonでLinqがArgumentTypeExceptionを投げている

私は、IronPythonのコードへ>利用できるのIQueryable <ケースを作ってるんだ、と私はそれをフィルタリングするためにLINQのメソッドを使用している、のような:

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

これは正常に動作しますが、私は列挙代わりの照会可能を使用していますので、私はWhere句はによって生成された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<Object,bool>>の代わりにExpression<Func<Case,bool>>にすることはできますか?あなたができるなら、それはそれを動作させるはずです。

+0

私はそれについてちょっと驚いた。 IronPythonが式ツリーをサポートしているという証拠は見つからないので、Linqの代わりにHQLを使用するように切り替えました。乾杯。 – littlecharva