我有卡课程。此类按字符串类型包含代码列。 我有一个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.
为什么?
答案 0 :(得分:1)
NHibernate不知道如何将int.Parse
调用转换为SQL。
最简单的解决方案:使用SQL。
更复杂和/或更有趣:扩展NHibernate LINQ提供程序以支持该调用。 Google extending nhibernate linq获取某些链接。
答案 1 :(得分:0)
尝试使用Convert.ToInt32而不是int.Parse。 看看这里: http://social.msdn.microsoft.com/Forums/en/adodotnetentityframework/thread/6c8892db-8df7-4174-b9b0-764dc1df82ad