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から、唯一の結果を取得することができます。複雑な型の場合は、トランスフォーマーを使用する必要があります。

QueryOver の詳細については、nhibernate.info のブログ投稿 ( http://nhibernate.info/blog/2009/12/17/queryover-in-nh-3-0.html ) を参照してください。

于 2012-09-20T08:59:30.747 に答える
2

Miroslav's answer for を使用できます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 に答える