Я пытался получить отдельные значения, используя 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());
Где 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 ()
. Без .Distinct ()
по умолчанию в запрашиваемой таблице есть несколько дубликатов, всего порядка 195 записей, но должно быть возвращено только 22 различных значения.
Я не уверен, что делаю неправильно, но был бы очень признателен за любую помощь, которая может быть предоставлена.
Спасибо