C# 从字节[]转换为十六进制以执行sql查询

C# 从字节[]转换为十六进制以执行sql查询,c#,mysql,sql-server,hash,type-conversion,C#,Mysql,Sql Server,Hash,Type Conversion,因此,在我的数据库中,我有一个包含MD5哈希id的计算列。在sql server上,它如下所示: 0x9D5C3DFE63EA502A31FB18D8A55E88C3 现在,我在代码中查询数据库,并通过执行以下操作将哈希id转换为字符串: BitConverter.ToString(row.Field<Byte[]>(HashId)).Replace("-", ""); 我现在需要的是,通过使用这个字符串,再次查询数据库,并通过WHERE条件检索表中hashId与字符串匹配的记录

因此,在我的数据库中,我有一个包含MD5哈希id的计算列。在sql server上,它如下所示:

0x9D5C3DFE63EA502A31FB18D8A55E88C3
现在,我在代码中查询数据库,并通过执行以下操作将哈希id转换为字符串:

BitConverter.ToString(row.Field<Byte[]>(HashId)).Replace("-", "");
我现在需要的是,通过使用这个字符串,再次查询数据库,并通过WHERE条件检索表中hashId与字符串匹配的记录。因此,首先我将字符串转换回字节[](否则类型不匹配),以便在sql查询中使用它。我使用在stackoverflow上找到的方法来实现这一点:

public static byte[] ToByte(this string str)
    {
        byte[] bytes = new byte[str.Length * sizeof(char)];
        System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
    }

但不幸的是,这还不够。因为问题似乎是开始时缺少的0x。。我无法轻松地将其追加回字节数组。我怎样才能解决这个问题?提前感谢

表中列的数据类型是什么?计算类型,它确实是byte[],因为MD5计算的结果。您是否尝试使用
0x
预加字符串,然后将字符串转换为字节数组?
public static byte[] ToByte(this string str)
    {
        byte[] bytes = new byte[str.Length * sizeof(char)];
        System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
    }