Ho cercato di ottenere valori distinti utilizzando LINQ to NHibernate e sto fallendo miseramente.Come posso ottenere valori distinti usando Linq su NHibernate?
ho provato:
var query = from requesters in _session.Linq<Requesters>()
orderby requesters.Requestor ascending
select requesters;
return query.Distinct();
Così come
var query = from requesters in _session.Linq<Requesters>()
orderby requesters.Requestor ascending
select requesters;
return query.Distinct(new RequestorComparer());
Dove 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
}
Non importa come strutturare la sintassi, non sembra mai a colpire il .Distinct()
. Senza .Distinct()
ci sono più duplicati per impostazione predefinita nella tabella che sto interrogazione, su ordine di 195 record totali, ma non ci dovrebbero essere solo 22 valori distinti restituiti.
io non sono sicuro di quello che sto facendo male, ma apprezzo molto qualsiasi tipo di assistenza che può essere fornita.
Grazie
Quali sono le query di linq che generano? –
Perché non lo segnala come un bug? – Paco