首页 > 解决方案 > == 是否总是对 SQL 中的二进制文件执行 SequenceEqual()?

问题描述

我需要比较Linq2sql完成的查询中的二进制值。

table1.FirstOrDefault(r => r.ID.SequenceEqual(id))//ID and id are binary/byte[].

但是 Linq2sql 抛出异常SequenceEqual,因为它没有为 SQL 定义,因此无法在其中执行。

我找到了这个答案,它创建了一种新Compare方法来混淆 Linq 以允许它。

但后来我发现这==也很有效,因为 SQL 无论如何都会逐字节比较二进制文件。

但是由于我看到了没有带来这个简单解决方案的答案,我想知道它是否真的会一直有效。

那么,我在这里遗漏了什么陷阱吗?

标签: c#sql.netsql-serverlinq-to-sql

解决方案


正如@Sonal 所说==,将始终适用于比较byte[]或任何其他支持相等比较的数据类型,但是您提到的问题不检查相等性,但它要求大于和小于运算符(>and <)用于不支持的数据类型它们,因此需要自定义比较方法。


推荐阅读