54

このようなQueryOverを作成します

SELECT *
FROM Table
WHERE Field IN (1,2,3,4,5)

メソッドを試しContainsましたが、例外が発生しました

"System.Exception:認識されないメソッド呼び出し:System.String:Boolean contains(System.String)"

ここに私のコード

var qOver = _HibSession.QueryOver<MyModel>(() => baseModel)                                                                
  .JoinAlias(() => baseModel.Submodels, () => subModels)
  .Where(() => subModels.ID.Contains(IDsSubModels))
  .List<MyModel>();
4

3 に答える 3

67

私は解決策を見つけました!! :-)

var qOver = _HibSession.QueryOver<MyModel>(() => baseModel)
    .JoinAlias(() => baseModel.Submodels, () => subModels)
    .WhereRestrictionOn(() => subModels.ID).IsIn(IDsSubModels)
    .List<MyModel>();
于 2011-03-24T10:38:53.247 に答える
52

あなたはこのようなことを試すことができます:

// if IDsSubModels - array of IDs
var qOver = _HibSession.QueryOver<MyModel>() 
                       .Where(x => x.ID.IsIn(IDsSubModels))

この状況では参加する必要はありません

于 2011-07-14T15:40:01.463 に答える
13

これは機能し、よりエレガントです

var Strings = new List<string> { "string1", "string2" };

var value = _currentSession
.QueryOver<T>()
.Where(x => x.TProperty == value)
.And(Restrictions.On<T>(y=>y.TProperty).IsIn(Strings))
.OrderBy(x => x.TProperty).Desc.SingleOrDefault();

where T is a Class and TProperty is a property of T
于 2011-08-11T23:28:01.813 に答える