Кажется, нет никакого пути, поскольку анонимные типы происходят из объекта. Но я думал, что спрошу с большой части времени мы используем анонимные типы в выражениях простого запроса для извлечения подмножеств данных, которые будут использоваться в тех анонимных типах, которые мы создаем. Это просто кажется мне, они должны быть структурами (типы значения) для большей эффективности памяти по сравнению со ссылочными типами.
Мысли?
Нет, не существует поддерживаемого синтаксиса C#, который бы создавал анонимные структуры
UPDATE: В C# 7 появились кортежи типа value, которые можно использовать в тех же контекстах, в которых используются анонимные типы ссылочного типа.
Существует распространенное мнение, что типы значений "более эффективны", чем ссылочные типы. Это совершенно мифическое представление; они более эффективны для одних операций и менее эффективны для других.
Например, большие типы значений менее эффективны по сравнению со ссылочными типами, если единицей работы, о которой вы беспокоитесь, является работа "скопировать значение в новое место". Ссылочный тип копирует ссылку размером с указатель независимо от размера ссылаемых данных и поэтому копирует за одну высоко оптимизированную машинную инструкцию. Тип значения копирует размер данных каждый раз, что может быть довольно большим и занимать несколько инструкций.
Независимо от этого, анонимные типы являются исключительно удобной функцией. Если вам не нравятся их рабочие характеристики, вы не обязаны их использовать. Вы можете определить свой собственный struct, если хотите.
Вы профилировали свое приложение и обнаружили, что анонимные типы являются самой медленной частью приложения? Если да, то я предлагаю вам вручную создать необходимые структуры и повторно протестировать, чтобы узнать, устранило ли это вашу проблему. В противном случае, я бы потратил больше времени на решение текущей бизнес-задачи и меньше времени на набор текста (как это позволяет функция).