Давайте вспомним, что LINQ - это не SQL , так почему это даже упоминается здесь? На вопросы SQL НЕ следует отвечать с помощью ответов LINQ. Это просто странно и не имеет никакого отношения к моему мнению !!
Оба примера приемлемы. Я предпочитаю второй пример, как большинство разработчиков SQL. Это также зависит от типа SQL JOIN, который вы хотите использовать. Заголовок вопроса просто для "JOIN", но в вашем примере используется INNER JOIN.
В данном случае для ВНУТРЕННЕГО СОЕДИНЕНИЯ это не имеет значения. Но имейте в виду, что оба примера приведут к HASH MATCHED JOIN, что не идеально для работы с индексами.
Loop Join гораздо эффективнее. Просто убедитесь, что вы рассматриваете свои индексы, так как хеш-соединения являются индикатором неэффективной индексации.