Несколько вещей ..
1) Вам нужно использовать ИЛИ, а не И:
AggregationLevel thisLevel = AggregrationLevel.Department | AggregationLevel.Division;
2) Вы можете использовать эту последовательность, чтобы вам не приходилось запоминать силыиз 2 в десятичном виде:
0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x100 ...
3) Наконец, varbinary
не то, что вы хотите.Посмотрите на integer
или bigint
.Перечисления хранятся как int
с или long
с, и вы ограничены количеством битов в int
или long
.Если вы хотите сохранить в varbinary
, вам нужно будет сериализовать значение в строку байтов, это будет зависеть от того, хотите ли вы использовать big-endian, сколько байтов следует использовать для хранения - может быть, дажепеременная и т. д. Требуется дополнительная информация.
Два варианта для # 3:
A.Если под вашим контролем находится только вы / код, не используйте varbinary, используйте int или bigint (в зависимости от количества требуемых битов).Еще лучше (потенциально), вместо этого используйте битовые поля, если вы собираетесь запросить их
B.Если это не так, администратор базы данных или провайдер приложения смогут указать, как они хотят, чтобы их varbinary заполнял
Надеюсь, что это поможет.