Skip to content

Instantly share code, notes, and snippets.

@lucamilan
Forked from Buthrakaur/gist:1613003
Created April 4, 2012 18:41
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lucamilan/2304623 to your computer and use it in GitHub Desktop.
Save lucamilan/2304623 to your computer and use it in GitHub Desktop.
NHibernate QueryOver.List extension to support casting to anonymous types
public static IList<TRes> ListAs<TRes>(this IQueryOver qry, TRes resultByExample)
{
var ctor = typeof (TRes).GetConstructors().First();
return qry.UnderlyingCriteria
.SetResultTransformer(Transformers.AliasToBeanConstructor(ctor))
.List<TRes>();
}
[Fact]
public void ListAs_Should_CastQueryOverResultToTypeSameAsSupliedExampleInstance()
{
var t = new { id = 0L, name = string.Empty };
var data = Session.QueryOver<X>()
.Where(x => x.Id == 123)
.SelectList(sl => sl
.Select(x => x.Id).WithAlias(() => t.id)
.Select(x => x.Name).WithAlias(() => t.name)
)
.ListAs(t);
Assert.Single(data);
Assert.Equal(123L, data[0].id);
Assert.Equal("name", data[0].name);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment