2

Cardクラスがあります。このクラスには、文字列型別のCode列があります。コードの最大数を選択するためのlinq-to-NHibernteクエリがあります。

var q = SessionInstance.Query<Card>()
       .Max(x => x.Code);

たとえば、この列のデータは :18950,9850であり、期待される結果は18950であり、結果は9850です。

このクエリを次のように変更しました。

var q = SessionInstance.Query<Card>()
       .Max(x => int.Parse(x.Code));

ただし、上記のクエリには、次のメッセージによる実行時例外があります。

Expression type 'NhMaxExpression' is not supported by this SelectClauseVisitor.

なんで?

4

2 に答える 2

1

int.ParseNHibernate は呼び出しを SQLに変換する方法を知りません。

最も簡単な解決策: SQL を使用します。

より複雑かつ/または楽しい: NHibernate LINQ プロバイダーを拡張して、その呼び出しをサポートします。一部のリンクについては、 Googleが nhibernate linqを拡張しています。

于 2012-12-03T18:35:01.180 に答える
0

int.Parse の代わりに Convert.ToInt32 を使用してみてください。ここを見てください: http://social.msdn.microsoft.com/Forums/en/adodotnetentityframework/thread/6c8892db-8df7-4174-b9b0-764dc1df82ad

于 2012-12-03T12:32:55.580 に答える