1

我有疑问:

 var query = this.session.QueryOver<Products>()

.Where(uic => uic.PageNumber == nextPage[0])

.SingleOrDefault(uic => uic.ProductNumber)

但是这个查询结果是产品类型。结果可能只是 ProductNumber 列的整数类型?

4

2 回答 2

4

尝试这样的事情:

var query = this.session.QueryOver<Products>()
    .Where(uic => uic.PageNumber == nextPage[0])
    .Select(uic => uic.ProductNumber)
    .SingleOrDefault<int>();

由于您需要单个原始类型值,您可以.Select定义结果列,然后.SingleOrDefault获取唯一的结果。对于复杂类型,您需要使用转换器。

您可以在 nhibernate.info 上的此博客文章中找到有关 QueryOver 的更多信息:http: //nhibernate.info/blog/2009/12/17/queryover-in-nh-3-0.html

于 2012-09-20T08:59:30.747 回答
2

您可以使用 Miroslav 的答案QueryOver,但使用 LINQ 会更简洁:

var productNumber = session.Query<Products>()
                           .Where(uic => uic.PageNumber == nextPage[0])
                           .Select(uic => uic.ProductNumber)
                           .SingleOrDefault();

请注意,您不需要强制转换,因为Select运算符将表达式类型更改为其参数的返回类型(即 的类型ProductNumber)。

于 2012-09-20T14:02:14.933 回答