使用NHibernate获得独特的IQueryable

时间:2011-10-06 08:22:39

标签: c# linq nhibernate distinct

我在db中有表字段:Id,Key,Value。我有几个相同的密钥
我希望通过NHibernate 3.2.0.4获得表的IQuerable集合,并使用不同的Key 我试过这样做:
1 var items = dr.Localization.GetQuery().Distinct(new MyComparer());
并收到:
无法解析表达式'值(NHibernate.Linq.NhQueryable`1 [AbstractDataRepository.Domain.ILocalization])。Distinct(value(LEditorExtension.Presentation.Controllers.MyComparer))':方法的重载& #39; 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表达式
有什么方法可以解决这个问题吗?谢谢!

1 个答案:

答案 0 :(得分:2)

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

如果您仍想使用自定义比较器,请首先执行List(),然后对其进行区分。

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