LINQ to Entities предназначен для преобразования всего запроса LINQ в эквивалентный SQL-запрос, который выполняется на сервере, поэтому вам нужно просто использовать функции и выражения, которые он знает, как преобразовать в SQL. Вы не можете просто вызывать произвольные функции.
-Эту проблему можно решить либо переписав логику вычислений в запросе LINQ, а это то, что вы упомянули, что вам не нужно.
-Другим решением было бы добавить вычисляемые свойства в MyClass, которые основаны на свойствах данных (var1, var2, var3, ...), которые нужно вычислить.
-Вы можете использовать что-то вроде техники, упомянутой в этом сообщении в блоге: http://daniel.wertheim.se/2011/02/07/c-clean-up-your-linq-queries-and-lambda-expressions/
поместить вашу логику в центральное место вне запроса LINQ.