Будет ли == всегда выполнять SequenceEqual () для двоичного кода в SQL? - PullRequest
0 голосов
/ 03 декабря 2018

Мне нужно сравнить двоичные значения в запросе, выполненном Linq2sql .

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

, но Linq2sql выдает исключение, потому что SequenceEqual не может быть выполнен в нем, потому что он не определендля SQL.

Я нашел этот ответ , который создает новый метод Compare, чтобы сбить с толку Linq.

Но затем я обнаружил, что == работает какхорошо, так как SQL сравнивает двоичные файлы побайтно в любом случае.

Но так как я увидел ответ, который не привел к этому простому решению, мне стало интересно, будет ли оно действительно работать все время.

Итак, есть ли какая-то ловушка, которую я здесь упускаю?

1 Ответ

0 голосов
/ 03 декабря 2018

Как сказал @Sonal == всегда будет работать для сравнения byte[] или любого другого типа данных, который поддерживает сравнение на равенство, однако упомянутый вами вопрос не проверяет равенство, но он требует операторов больше, чем и меньше (> и <) для типа данных, который их не поддерживает, поэтому необходим специальный метод сравнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...