[Flags]
public enum ShowProductOn : short
{
HomePage = 1,
SalesPage = 2,
NewsLetter = 4
};
Допустимые значения для этого перечисления:
1 - Домашняя страница
2 - SalesPage
3 - HomePage, SalesPage
4 - NewsLetter
5 - HomePage, NewsLetter
6 - SalesPage, NewsLetter
7 - HomePage, SalesPage, NewsLetter
Я хотел бы написать критерий, который возвращает все продукты на домашней странице.
Проверить это в c # очень просто:
if ((MY_PARAM & ShowProductOn.HomePage) == ShowProductOn.HomePage)
Console.WriteLine("Yes");
в Sql тоже очень просто:
ОБЪЯВИТЬ @BitMask int = 3
IF ((@BitMask & 1) = 1)
НАЧАТЬ
Print('Yes')
END
Это критерий NH, который я написал, чтобы вернуть все продукты на домашней странице (должно соответствовать 1 | 3 | 5 | 7):
Критерии ICriteria = NHibernateSession.CreateCriteria ()
.Add (Restrictions.Eq ("ShowProductOn", ShowProductOn.HomePage));
Этот критерий возвращает только элементы с «ShowProductOn» = 1, но игнорирует другие сопоставленные элементы с «ShowProductOn» = 3 | 5 | 7.
Кто-нибудь знает синтаксис ICriteria / HQL для написания критерия, который будет возвращать все элементы с «ShowProductOn» = 1 | 3 | 5 | 7?
Шей.