c# nhibernate queryover nhibernate-queryover where-in

c# - NHibernate utilizando QueryOver con WHERE IN



nhibernate-queryover where-in (3)

Crearía un QueryOver como este

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

He intentado con el método Contains , pero he encontrado la excepción

"System.Exception: llamada al método no reconocido: System.String: Boolean contains (System.String)"

Aquí mi código

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


Esto funciona y es más elegante

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


Puedes probar algo como esto:

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

No necesitas unirte en esta situación


¡Encontré la solución! :-)

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