csharp NHibernate QueryOver.List扩展支持转换为匿名类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp NHibernate QueryOver.List扩展支持转换为匿名类型相关的知识,希望对你有一定的参考价值。
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);
}
以上是关于csharp NHibernate QueryOver.List扩展支持转换为匿名类型的主要内容,如果未能解决你的问题,请参考以下文章
csharp 按sql #NHibernate排序
csharp 标准sql #NHibernate
csharp 按sql #NHibernate分组
csharp SqlFunction #NHibernate
csharp NHibernate驱动程序Oracle
csharp:Nhibernate Procedure with CreateSQLQuery