NHibernate using QueryOver with WHERE IN

I would create a QueryOver like this

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

I tried using the Contains method, but I ran into Exception

"System.Exception: unrecognized method call: System.String: Boolean Contains (System.String)"

Here is my code

 var qOver = _HibSession.QueryOver<MyModel>(() => baseModel) .JoinAlias(() => baseModel.Submodels, () => subModels) .Where(() => subModels.ID.Contains(IDsSubModels)) .List<MyModel>(); 
+45
c # nhibernate where-in queryover nhibernate-queryover
Mar 23 2018-11-11T00:
source share
3 answers

I found a solution !:-)

 var qOver = _HibSession.QueryOver<MyModel>(() => baseModel) .JoinAlias(() => baseModel.Submodels, () => subModels) .WhereRestrictionOn(() => subModels.ID).IsIn(IDsSubModels) .List<MyModel>(); 
+51
Mar 24 2018-11-11T00:
source share

You can try something like this:

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

You do not need a connection in this situation

+43
Jul 14 '11 at 3:40 a.m.
source share

It 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 
+11
Aug 11 '11 at 23:28
source share



All Articles