我想从C#代码读取存储在SQL Server中的按位值。
假定下面的代码将按位值存储到数据库中。
DECLARE @MedCopay VARCHAR(1);
DECLARE @MedDeductible VARCHAR(1);
DECLARE @MedCoins VARCHAR(1);
SET @MedCopay = 'Y';
SET @MedDeductible = 'N';
SET @MedCoins = 'Y';
SELECT CASE
WHEN @MedCopay = 'Y'
THEN 1
ELSE 0
END|CASE
WHEN @MedDeductible = 'Y'
THEN 10
ELSE 0
END|CASE
WHEN @MedCoins = 'Y'
THEN 100
ELSE 0
END;
上面的查询会将以下值存储到数据库中
101
所以问题是我该如何编写C#代码来确定
101 = MedCopay & MedCoins?
您在找enum
吗?
[Flags]
public enum Med {
Copay = 1,
Deductable = 2,
Coins = 4
};
所以
// 101
Console.Write(Convert.ToString((int) (Med.Copay | Med.Coins), 2));
撤销:
String source = "101";
Med parsed = (Med) (Convert.ToInt32(source, 2));
// Copay, Coins
Console.Write(parsed);
您可能需要为此实现扩展类:
public static class MedExtensions {
public static String Represent(this Med value) {
return Convert.ToString((int) value, 2);
}
}
因此测试将是
Console.Write((Med.Copay | Med.Coins).Represent());
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句