如何使用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

我一直在尝试使用Linq到NHibernate来获得不同的值,但我失败得很惨

我试过:

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提供程序有关。