Попробуйте переписать с явным условием вместо абстрактной конструкции "предикат".Из того, что я вижу в SQL, эта композиция может выглядеть странно для синтаксического анализатора в отдельности, и одно соединение [t5], которое вы только что назвали dupe :-), служит для выполнения этого условия.
Также попробуйте рассказать нам, чтосиница, которую вы действительно хотите найти с помощью этого запроса, и попробуйте написать нормальный SQL, который делает то, что вы хотели.Я должен быть человеком :-) и мне это тоже кажется странным: -))
Технически говоря, вы принудительно выполняли двойное соединение, используя условие on в двух отдельных запросах (каждое присваивание переменной этотехнически отдельный запрос).
Кроме того, группирование по столбцу без агрегирования не всегда эквивалентно выбору отличного.В частности, выбор отличного в соединении может иметь приоритет над соединением - запросы являются деклатативными (могут подвергаться переупорядочению), и вы пытались заставить его быть процедурным.Итак, LINQ дал вам точную процедурную процедуру :-), а затем SQL переупорядочил в соответствии с правилами SQL :-))
Итак, сначала просто напишите нормальный SQL, а если вы не можете LINQ-ize, поместите его в sproc -в любом случае это будет ускоряться: -)