如何解决比较SQL Server中的两个字节数组
我将byte[]
作为varbinary(64)
存储在SQL Server数据库中,我需要使用输入byte[]
查找特定行。我正在使用Entity Framework访问数据库,因此可以运行这样的linq查询:
private MyTable GetMyTable(byte[] inputArray)
{
return _context.MyTable.FirstOrDefault(x => x.Hash.SequenceEqual(inputArray));
}
问题在于SequenceEqual
无法转换为SQL查询,并且该查询将在本地进行评估(这是不受欢迎的行为)。是否可以将SequenceEqual
替换为简单的比较运算符==
?还是这种方法容易出错?有没有比这更好的选择了?
private MyTable GetMyTable(byte[] inputArray)
{
return _context.MyTable.FirstOrDefault(x => x.Hash == inputArray);
}
请注意,我的字节数组的范围为32到64个字节,因此不会比较大。
解决方法
是否可以将SequenceEqual替换为简单的比较运算符==?
可能是的,它将转换为SQL
const StyledCol = styled(Col)`
:hover {
box-shadow: 0px 4px 10px rgba(0,0.25);
}
padding:0px;
`;
<Row gutter={[16,24]}>
<StyledCol span={12} />
<StyledCol span={12} />
</Row>
<Row gutter={[16,24]}>
<StyledCol span={12} />
<StyledCol span={12} />
</Row>
在SQL Server中,用于二进制/ varbinary的 SELECT ...
FROM [MyTable] AS [c]
WHERE [c].[Hash] = @__inputArray_0
对值执行逐字节的二进制比较,而忽略尾随的0。因此,如果这是您想要的比较,那么就很好了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。