Я не верю, что вы можете достичь того, что вы хотите, так, как вы делаете это.Чтобы создать анонимный тип, форма (то есть свойства) типа должна быть известна во время компиляции.Лучше всего сделать то, что вы хотите, - создать выражение select вручную (используя API-выражения для выражения, найденные в System.Linq.Expressions
), а затем передать встроенное вами выражение в метод расширения Select()
(а неиспользуя синтаксис декларативного запроса, как вы в своем примере).
В конечном счете, если вы работаете, скорее всего, вам придется использовать отражение, чтобы получить доступ к чему-либо из элементов коллекции, которую выполучают, поскольку вы не будете знать, что он будет удерживать до времени выполнения.
Есть ли причина, по которой вы не хотите возвращать весь объект?