【发布时间】:2011-09-07 09:22:02
【问题描述】:
我有一个如下的枚举:
[Flags]
public enum AggregationLevel
{
/// <summary>
/// 00000001
/// </summary>
Department = 1,
/// <summary>
/// 00000010
/// </summary>
Gbu = 2,
/// <summary>
/// 00000100
/// </summary>
Division = 4,
/// <summary>
/// 00001000
/// </summary>
Region = 8,
/// <summary>
/// 00010000
/// </summary>
Market = 16,
/// <summary>
/// 00100000
/// </summary>
Cluster = 32,
/// <summary>
/// 01000000
/// </summary>
Store = 64
}
然后我有一个需要 varbinary(字节数组)的存储过程参数。
我有一个应该传递给它的枚举实例:
AggregationLevel thisLevel = AggregationLevel.Department & AggregationLevel.Division;
然后,应该将值传递给这个存储过程:
var parameter = new SqlParameter("@pBitMask", SqlDbType.VarBinary)
参数 = ?
如何将我的 'thisLevel' 枚举转换为字节数组,以便将其分配给此 sql 参数?
谢谢,
【问题讨论】:
-
如果你需要 Department 和 Division,你需要
AggregationLevel thisLevel = AggregationLevel.Department | AggregationLevel.Division;(注意|而不是&)。 -
能否将 Int 传递给 sql 参数还是必须是字节数组?
-
这里可能会产生误解。您是否可能需要一个项目数组,其中每个元素都是
AggregationLevel中的值的一部分?即,您需要一个包含 7 个项目的数组来代替该推理。但是,您可能希望将枚举的int值存储在 DB 中。 -
@Kolja,是的 Int 可以传递给参数;谢谢。
-
@Abel,数据库中的值最好是 varbinary,因为我现在可以使用 & 来比较值,请参见:consultingblogs.emc.com/jamesrowlandjones/archive/2008/07/04/…
标签: c# stored-procedures enums varbinary