you might want to try using MoreLinq. MoreLinq adds a DistinctBy extension
method.
I setup a little test.
using (ISession session = SessionFactory.OpenSession())
{
using (ITransaction tx = session.BeginTransaction())
{
var person = new Person { Name = "Fred" };
session.Save(person);
var person1 = new Person { Name = "Fred" };
session.Save(person1);
var person2 = new Person { Name = "Fred" };
session.Save(person2);
var person3 = new Person { Name = "Fred" };
session.Save(person3);
var person4 = new Person { Name = "Fred" };
session.Save(person4);
session.Flush();
var personList = (from p in session.Query<Person>()
select p).DistinctBy(x => new { x.Name }).ToList();
tx.Rollback();
}
}
personList return 1 person.
On Fri, Jan 24, 2014 at 3:31 PM, Mike Christensen <[email protected]>wrote:
> I basically want this query:
>
> select distinct name from mytable order by name;
>
> The following works, but I find it rather overly complex:
>
> var formSyn = session.QueryOver<Models.NlpFormSynonyms>()
> .OrderBy(p => p.Name).Asc
> .Select(s => s.Name)
>
>
> .RootCriteria.SetProjection(Projections.Distinct(Projections.Property<Models.NlpFormSynonyms>(p
> => p.Name)))
> .List<Models.NlpFormSynonyms>();
>
>
> I've also tried this:
>
> var formSyn = session.QueryOver<Models.NlpFormSynonyms>()
> .OrderBy(p => p.Name).Asc
> .Select(s => s.Name)
> .TransformUsing(Transformers.DistinctRootEntity)
> .List();
>
> Which looks nicer, but causes the runtime exception:
>
> An unhandled exception of type 'NHibernate.Exceptions.GenericADOException'
> occurred in NHibernate.dll
>
> Additional information: Unable to perform find[SQL: SQL not available]
>
> What's the best way to do this? Thanks!
>
> Mike
>
> --
> You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/nhusers.
> For more options, visit https://groups.google.com/groups/opt_out.
>
--
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/groups/opt_out.