使用 NHibernate 获得独特的 IQueryable
我在数据库中有一个表,其中包含字段:Id、Key、Value。我有几个相同的钥匙
我想通过 NHibernate 3.2.0.4 获取表的 IQuerable 集合,并通过 Key 进行区分。
我尝试这样做:
1.var items = dr.Localization.GetQuery().Distinct(new MyComparer());
并收到:
无法解析表达式“value(NHibernate.Linq.NhQueryable`1[AbstractDataRepository.Domain.ILocalization]).Distinct(value(LEditorExtension.Presentation.Controllers.MyComparer))”:方法“System.Linq.Queryable”的重载。目前不支持“Distinct”。
2.var items = dr.Localization.GetQuery().GroupBy(x => x.Key).Select(g => g.First());
在“项目”中收到空值。
dr.Localization.GetQuery().GroupBy(x => x.Key): 表达式不能包含 lambda 表达式
有什么办法可以解决这个问题吗?谢谢!
I have table in db with fields: Id, Key, Value. I have several identical Key's
I want to get IQuerable collection of table via NHibernate 3.2.0.4 with distinct by Key.
I tried do it so:
1.var items = dr.Localization.GetQuery().Distinct(new MyComparer());
and received:
Could not parse expression 'value(NHibernate.Linq.NhQueryable`1[AbstractDataRepository.Domain.ILocalization]).Distinct(value(LEditorExtension.Presentation.Controllers.MyComparer))': This overload of the method 'System.Linq.Queryable.Distinct' is currently not supported.
2.var items = dr.Localization.GetQuery().GroupBy(x => x.Key).Select(g => g.First());
received null in 'items'.
dr.Localization.GetQuery().GroupBy(x => x.Key): Expression cannot contain lambda expressions
Is there any way to solve this problem? Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这里的问题是,您的查询正在针对您的自定义比较器无效的数据库触发,因为它无法转换为有效的 SQL。因此,如果您认为可以在 sql 中进行区分,那么您可以尝试指定您希望它区分的属性。
如果您仍然想使用自定义比较器,请先执行 List(),然后对其执行不同操作。
The problem here is that your query is being fired against the db where your custom comparer is invalid as it cant be translated to a valid sql. Thus if you think you can do the distinct in sql then you can try by specifying which property(s) you want it to be distinct.
If you still wanna use your custom comparer do a List() first and then do a distinct on it.