He intentado obtener valores distintos utilizando Linq para NHibernate y estoy fallando miserablemente.¿Cómo puedo obtener valores distintos usando Linq a NHibernate?
He intentado:
var query = from requesters in _session.Linq<Requesters>()
orderby requesters.Requestor ascending
select requesters;
return query.Distinct();
Así como
var query = from requesters in _session.Linq<Requesters>()
orderby requesters.Requestor ascending
select requesters;
return query.Distinct(new RequestorComparer());
Dónde RequestorComparer es
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 importa lo estructuro la sintaxis, parece que nunca para golpear el .Distinct()
. Sin .Distinct()
, hay varios duplicados de forma predeterminada en la tabla que estoy consultando, por orden de 195 registros totales, pero solo se deben devolver 22 valores distintos.
No estoy seguro de lo que estoy haciendo mal, pero agradecería mucho cualquier ayuda que se pueda proporcionar.
Gracias
¿Qué sql son esas consultas de linq que generan? –
¿Por qué no lo denuncia como un error? – Paco