NHibernate: HQL Äquivalent Expression.In Criteria ()?
-
22-08-2019 - |
Frage
Wie würden Sie die folgenden Kriterien Abfrage in HQL auszudrücken?
var idArray = new int[] { 1, 2, 3, 4, 5 };
Session.CreateCriteria(typeof(Foo))
.Add(Expression.In("Id", idArray)
.List<Foo>();
Ich bin mir bewusst, dass es ein „in“ Schlüsselwort in HQL, aber wie ich es verstehe, dass Schlüsselwort ist für die Verwendung mit Subqueries nicht so etwas wie“... wo Id in (1, 2, 3, 4, 5)“oder dergleichen. Ist dies nicht der Fall ist, werde ich gerne Korrekturen übernehmen.
Danke / Erik
Lösung
Versuchen Sie folgendes:
var idArray = new int[] { 1, 2, 3, 4, 5 };
var foos = Session
.CreateQuery("from Foo f where f.Id in (:ids)")
.SetParameterList("ids", idArray)
.List<Foo>();
Andere Tipps
Das funktioniert auch
ICriteria sc = session.CreateCriteria(typeof(Foo));
sc.Add(Restrictions.In("id",new[] { 1, 2 }));
siteList = sc.List();
session.Close();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow