[Flaggen]
public enum ShowProductOn : short
{
HomePage = 1,
SalesPage = 2,
NewsLetter = 4
};
Gültige Werte für diese Aufzählung:
1 - Startseite
2 - VerkaufsSeite
3 - HomePage, Verkaufsseite
4 - Nachrichtenbrief
5 - Startseite, NewsLetter
6 - Verkaufsseite, NewsLetter
7 - Startseite, Verkaufsseite, NewsLetter
Ich würde gerne ein Kriterium schreiben, das alle Produkte auf der Homepage zurückgibt. Um es in c# zu überprüfen ist sehr einfach:
if ((MY_PARAM & ShowProductOn.HomePage) == ShowProductOn.HomePage)
Console.WriteLine("Yes");
in Sql ist es auch sehr einfach:
DECLARE @BitMask int = 3
WENN ((@BitMask & 1) = 1)
BEGIN
Print('Yes')
ENDE
Dies ist das NH-Kriterium, das ich geschrieben habe, um alle Produkte auf der Homepage zurückzugeben (sollte 1|3|5|7 entsprechen):
ICriteria criteria = NHibernateSession.CreateCriteria() .Add(Restrictions.Eq("ShowProductOn", ShowProductOn.HomePage));
Dieses Kriterium liefert nur Artikel mit "ShowProductOn"=1, ignoriert aber die anderen übereinstimmenden Artikel mit "ShowProductOn"=3|5|7.
Kennt jemand die ICriteria /HQL-Syntax, um ein Kriterium zu schreiben, das alle Artikel mit "ShowProductOn"=1|3|5|7 zurückgibt?
Shay.