1
 List<object[]> products = GetSession().CreateCriteria<Product>()
            .SetProjection(Projections.ProjectionList()
                               .Add(Projections.Property("Id"))
                               .Add(Projections.Property("Name"))
                               .Add(Projections.Property("Price"))
             )
             .List();
public class ProductRow
{
     public int Id { get; set; }
     public string Name { get; set; }
     public double Price { get; set; }
}

如何获得 List<ProductRow> 类型的结果?

我看到有一个函数 Projection.Cast,但我没有看到任何关于如何使用它的文档。

4

1 回答 1

3

您可以尝试设置结果转换器:

var result = GetSession()
    .CreateCriteria<Product>()
    .SetProjection(Projections.ProjectionList()
        .Add(Projections.Property("Id"), "Id")
        .Add(Projections.Property("Name"), "Name")
        .Add(Projections.Property("Price"), "Price")
    )
    .SetResultTransformer(Transformers.AliasToBean<ProductRow>())
    .List<ProductRow>();

ProductRow请注意在添加每个投影时使用指向 a 的属性名称的别名。

于 2010-02-14T08:10:59.633 回答