如何直接将C# BitArray读写到SQL Server Binary字段?
关于C# BitArray直接读写SQL Server的问题
没有直接读写BitArray到SQL Server的原生方法,因为SQL Server里没有和C# BitArray直接对应的内置数据类型,底层还是得把BitArray转换成SQL支持的类型(比如字节数组)才能存储。
不过你可以把转换逻辑封装成扩展方法,让代码更简洁,不用每次都手动创建字节数组:
public static class BitArrayExtensions { // 把BitArray转成byte[] public static byte[] ToByteArray(this BitArray bitArray) { // 自动计算需要的字节数,避免硬编码长度 byte[] bytes = new byte[(bitArray.Length + 7) / 8]; bitArray.CopyTo(bytes, 0); return bytes; } // 把byte[]转回BitArray,指定原BitArray的长度 public static BitArray ToBitArray(this byte[] bytes, int originalLength) { var bitArray = new BitArray(bytes); bitArray.Length = originalLength; return bitArray; } }
使用的时候就简化成:
// 保存 Save(bitArray.ToByteArray()); // 读取 var byteArray = ReadByteArray(); // 从SQL读取byte[]的方法 var bitArray = byteArray.ToBitArray(625);
另外,SQL Server里建议用VARBINARY类型来存储转换后的字节数组,这是最匹配的存储类型。
内容的提问来源于stack exchange,提问作者ke ke
相关产品推荐
相关产品推荐

