Помните, что существует разница между тем, работает ли запрос и работает ли он эффективно ! Оператор LINQ преобразуется в T-SQL, когда целью этого оператора является SQL Server, поэтому вам нужно подумать о том, какой T-SQL будет создан.
Использование String.Equals скорее всего (я предполагаю) вернет все строки из SQL Server, а затем выполнит сравнение в .NET, потому что это выражение .NET, которое нельзя преобразовать в T-SQL.
Другими словами, использование выражения расширит ваш доступ к данным и лишит вас возможности использовать индексы. Он будет работать на небольших столах, и вы не заметите разницу. На большом столе он может очень плохо работать.
Это одна из проблем, которая существует с LINQ; люди больше не думают о том, как будут исполняться написанные ими заявления.
В этом случае нет способа сделать то, что вы хотите, без использования выражения - даже в T-SQL. Поэтому вы не сможете сделать это более эффективно. Даже приведенный выше ответ T-SQL (с использованием переменных с сопоставлением), скорее всего, приведет к игнорированию индексов, но если это большая таблица, то стоит выполнить инструкцию и посмотреть план выполнения, чтобы увидеть, использовался ли индекс .