Я врезался в огромную проблему. У меня к этим двум объектам: IList<Product> products;
и Collection collection;
Linq to NHibernate. ПоддерживаетAny() обходной путь?
Оба объекта содержит и IList<Tag>
названного .Tags.
Я пытаюсь сделать это с помощью Linq To NHibernate:
products = products.Where(p => p.Tags.Any(t => collection.Tags.Contains(t)));
Это даст исключение, потому что Linq To NHibernate не поддерживают это. Но как я могу это сделать? Я просто не могу найти какой-либо умный способ получить только products
, который содержит теги, которые есть у конкретного collection
.
Заранее благодарен!
Btw проблема кажется очень похожей на IQueryable contains any of string array, но в моем сценарии я не хочу сравнивать со строковым массивом, но с коллекцией объектов poco.
[EDIT] я узнал, что он бросает это исключение: Unable to cast object of type 'System.Linq.Expressions.ConstantExpression' to type 'System.Linq.Expressions.LambdaExpression'.
Альтернативные пути решения проблемы можно только приветствовать тоже (HQL и т.д.).
Спасибо! [/ EDIT]
О, и я использую NHibernate 2.1.2 – jhovgaard
Альтернативный способ: обновление до последней версии и нового поставщика Linq. Аналогичные запросы работают. Hql должно быть возможным с 2.1.2 – Paco