我有疑问:
var query = this.session.QueryOver<Products>()
.Where(uic => uic.PageNumber == nextPage[0])
.SingleOrDefault(uic => uic.ProductNumber)
但是这个查询结果是产品类型。结果可能只是 ProductNumber 列的整数类型?
我有疑问:
var query = this.session.QueryOver<Products>()
.Where(uic => uic.PageNumber == nextPage[0])
.SingleOrDefault(uic => uic.ProductNumber)
但是这个查询结果是产品类型。结果可能只是 ProductNumber 列的整数类型?
尝试这样的事情:
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
您可以使用 Miroslav 的答案QueryOver
,但使用 LINQ 会更简洁:
var productNumber = session.Query<Products>()
.Where(uic => uic.PageNumber == nextPage[0])
.Select(uic => uic.ProductNumber)
.SingleOrDefault();
请注意,您不需要强制转换,因为Select
运算符将表达式类型更改为其参数的返回类型(即 的类型ProductNumber
)。