I've been trying to get distinct values using Linq to NHibernate and I'm failing miserably.
I've tried:
var query = from requesters in _session.Linq<Requesters>()
orderby requesters.Requestor ascending
select requesters;
return query.Distinct();
As well as
var query = from requesters in _session.Linq<Requesters>()
orderby requesters.Requestor ascending
select requesters;
return query.Distinct(new RequestorComparer());
Where RequestorComparer is
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
}
No matter how I structure the syntax, it never seems to hit the .Distinct()
. Without .Distinct()
there are multiple duplicates by default in the table I'm querying, on order of 195 total records but there should only be 22 distinct values returned.
I'm not sure what I'm doing wrong but would greatly appreciate any assistance that can be provided.
Thanks
I have found that the following works (NHibernate v3.3.1).
var query= (from requesters in _session.Query<Requesters>()
orderby requesters.Requestor ascending
select requesters.Requestor).Distinct();
Try reordering to :
var query = from requesters in _session.Linq<Requesters>()
select requesters;
return query.Distinct().OrderBy(x=>x.Requestor);
I have seen issues with ordering of OrderBy and Distinct.
Let me know if that doesn't work out for you.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With