2

我有一个Card类。这个类有一个按字符串类型的代码列。我有一个用于选择最大代码的 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

NHibernate 不知道如何将您的int.Parse调用转换为 SQL。

最简单的解决方案:使用 SQL。

更复杂和/或更有趣:扩展 NHibernate LINQ 提供程序以支持该调用。谷歌为一些链接扩展了 nhibernate linq

于 2012-12-03T18:35:01.180 回答
0

尝试使用 Convert.ToInt32 而不是 int.Parse 。看看这里: http ://social.msdn.microsoft.com/Forums/en/adodotnetentityframework/thread/6c8892db-8df7-4174-b9b0-764dc1df82ad

于 2012-12-03T12:32:55.580 回答