Skip to content

Instantly share code, notes, and snippets.

@Buthrakaur
Created January 14, 2012 21:44
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save Buthrakaur/1613003 to your computer and use it in GitHub Desktop.
Save Buthrakaur/1613003 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);
}
@Buthrakaur
Copy link
Author

I developed it exactly for the same purpose - simple NHibernate to json output :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment