NHibernate using QueryOver with WHERE IN

前端 未结 3 1270
孤城傲影
孤城傲影 2020-12-24 05:07

I would create a QueryOver like this

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

I\'ve tried with Contains method but I\'ve

相关标签:
3条回答
  • 2020-12-24 05:33

    This works and is more elegant

    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
    
    0 讨论(0)
  • 2020-12-24 05:40

    You can try something like this:

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

    You don't need a join in this situation

    0 讨论(0)
  • 2020-12-24 05:55

    I've found the solution!! :-)

    var qOver = _HibSession.QueryOver<MyModel>(() => baseModel)
        .JoinAlias(() => baseModel.Submodels, () => subModels)
        .WhereRestrictionOn(() => subModels.ID).IsIn(IDsSubModels)
        .List<MyModel>();
    
    0 讨论(0)
提交回复
热议问题