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