LINQ требует, чтобы все ваши столбцы имели статическое имя.Это означает, что вам нужно создать выражение запроса, используя отражение, что является неприятным видом работы.
В некотором смысле, отражение в .NET делает то же самое, что вы делаете с конкатенацией строк в SQL - вы динамически создаетезапрос, который должен иметь статически именованные столбцы.
Я думаю, вам лучше остаться с SQL для этой конкретной задачи.