Как передать список предложений in в Hh Nhibernate?
, например
// data input from the user interface, not known at compile time
object[] productIds = {1, 17, 36, ... };
string hqlQuery = @"
from Product as prod
where prod.Id in ( ? )";
HqlBasedQuery query = new HqlBasedQuery(typeof(Product), hqlQuery, productIds)
ActiveRecordMediator.ExecuteQuery(query);
Так вот, это не сработает, как бы мне хотелось! Я действительно застрял, делая что-то вроде этого:
// data input from the user interface, not known at compile time
object[] productIds = {1, 17, 36, ... };
string hqlQuery = @"
from Product as prod
where prod.Id in ( {0} )";
// build string array of the right number of '?' characters
string[] paramStringArray = new String('?', productIds.Length).ToCharArray().Select(item => item.ToString()).ToArray();
// join to make '?, ?, ?, ?, ?'
string parameterString = string.Join(", ", paramStringArray);
hqlQuery = string.Format(hqlQuery , parameterString);
HqlBasedQuery query = new HqlBasedQuery(typeof(Product), hqlQuery, productIds)
ActiveRecordMediator.ExecuteQuery(query);
Это просто уродливо, и я попытался сделать его не таким уродливым и коротким, как я могу. Если у кого-то есть хороший способ сделать это, пожалуйста, дайте мне знать.
Также я вижу, что Джефф задавал похожие вопросы о том, как это сделать в SQL: Параметризация предложения SQL IN
Это в основном тот же вопрос, я просто хочу знать, как это сделать из HQL. Вот почему я делаю названия такими похожими.