クエリがあります:
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
から、唯一の結果を取得することができます。複雑な型の場合は、トランスフォーマーを使用する必要があります。
QueryOver の詳細については、nhibernate.info のブログ投稿 ( http://nhibernate.info/blog/2009/12/17/queryover-in-nh-3-0.html ) を参照してください。
Miroslav's answer for を使用できますQueryOver
が、これは LINQ を使用するとよりきれいに見えます。
var productNumber = session.Query<Products>()
.Where(uic => uic.PageNumber == nextPage[0])
.Select(uic => uic.ProductNumber)
.SingleOrDefault();
Select
演算子は式の型をそのパラメーターの戻り値の型 (の型) に変更するため、キャストは必要ないことに注意してくださいProductNumber
。