如何使用Linq到NHibernate获得不同的值?
我一直在尝试使用Linq到NHibernate来获得不同的值,但我失败得很惨 我试过:如何使用Linq到NHibernate获得不同的值?,nhibernate,distinct,linq-to-nhibernate,Nhibernate,Distinct,Linq To Nhibernate,我一直在尝试使用Linq到NHibernate来获得不同的值,但我失败得很惨 我试过: var query = from requesters in _session.Linq<Requesters>() orderby requesters.Requestor ascending select requesters; return query.Distinct(); 以及 var query = from requesters in _sessi
var query = from requesters in _session.Linq<Requesters>()
orderby requesters.Requestor ascending
select requesters;
return query.Distinct();
以及
var query = from requesters in _session.Linq<Requesters>()
orderby requesters.Requestor ascending
select requesters;
return query.Distinct(new RequestorComparer());
请求者或比较者在哪里
public class RequestorComparer : IEqualityComparer<Requesters>
{
#region IEqualityComparer<Requesters> Members
bool IEqualityComparer<Requesters>.Equals(Requesters x, Requesters y)
{
//return x.RequestorId.Value.Equals(y.RequestorId.Value);
return ((x.RequestorId == y.RequestorId) && (x.Requestor == y.Requestor));
}
int IEqualityComparer<Requesters>.GetHashCode(Requesters obj)
{
return obj.RequestorId.Value.GetHashCode();
}
#endregion
}
无论我如何构造语法,它似乎从来没有击中.Distinct。在我查询的表中,默认情况下有多个重复项,共有195条记录,但应该只返回22个不同的值
我不确定我做错了什么,但非常感谢能提供的任何帮助
谢谢尝试重新排序:
var query = from requesters in _session.Linq<Requesters>()
select requesters;
return query.Distinct().OrderBy(x=>x.Requestor);
我见过OrderBy和Distinct的排序问题
如果这对您不起作用,请告诉我。您尝试过NH3.0中新的集成Linq提供商吗
旧版本非常有限。我发现以下内容适用于NHibernate v3.3.1
var query= (from requesters in _session.Query<Requesters>()
orderby requesters.Requestor ascending
select requesters.Requestor).Distinct();
那些linq查询生成的是什么sql?为什么不将其报告为bug?尝试过之后,仍然无法正常工作。我得到的结果与以前完全相同。选择此请求者ID作为FK8\u 0\u 0,此请求者作为请求者0\u 0,来自请求者this,其中this\u.REQUESTORID=:p0按此请求者asc排序:p0=10775注意:这使用NHibernate 3.0中的集成Linq提供程序查询。最初的问题与不再支持的NHibernate.Linq提供程序有关。