我在db表中具有以下字段: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的此重载。当前不支持“区别”。

2. var items = dr.Localization.GetQuery().GroupBy(x => x.Key).Select(g => g.First());
在“项目”中收到null。
dr.Localization.GetQuery()。GroupBy(x => x.Key):表达式不能包含lambda表达式
有什么办法解决这个问题?谢谢!

最佳答案

这里的问题是您的查询针对的是您的自定义比较器无效的数据库,因为它无法转换为有效的sql。因此,如果您认为可以在sql中进行区分,则可以尝试指定要使其与众不同的属性。

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

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

关于c# - 使用NHibernate获取不同的IQueryable,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7671797/

10-12 22:20