我在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表达式
有什么方法可以解决这个问题吗?谢谢!
答案 0 :(得分:2)
这里的问题是你的查询是针对自定义比较器无效的数据库触发的,因为它无法转换为有效的sql。因此,如果您认为可以在sql中执行distinct,那么您可以尝试指定您希望它与哪些属性不同。
如果您仍想使用自定义比较器,请首先执行List(),然后对其进行区分。
dr.Localization.GetQuery().List().Distinct(new MyComparer());