使用 NHibernate 获得独特的 IQueryable

发布于 2024-12-08 08:23:04 字数 682 浏览 0 评论 0原文

我在数据库中有一个表,其中包含字段: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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

維他命╮ 2024-12-15 08:23:04

这里的问题是,您的查询正在针对您的自定义比较器无效的数据库触发,因为它无法转换为有效的 SQL。因此,如果您认为可以在 sql 中进行区分,那么您可以尝试指定您希望它区分的属性。

如果您仍然想使用自定义比较器,请先执行 List(),然后对其执行不同操作。

dr.Localization.GetQuery().List().Distinct(new MyComparer());

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.

dr.Localization.GetQuery().List().Distinct(new MyComparer());
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文