Иногда я подозреваю, что может быть полезно выполнить что-то, что похоже на запрос LINQ, но случайно не использует LINQ - но вам все еще нужна проекция какого-то рода. Не думаю, что я использовал бы анонимные типы в их текущей форме для чего-то радикально отличного от проекций LINQ.
Одна вещь, которую я хотел бы увидеть, - это возможность создавать «именованные» типы с помощью простых объявлений, которые будут генерировать свойства и конструктор так же, как для анонимных типов, а также переопределять Equals. / GetHashCode / ToString таким же (полезным) способом. Затем эти типы могут быть преобразованы в «нормальные» типы, когда возникнет необходимость добавить больше поведения.
Опять же, я не думаю, что использовал бы это ужасно часто - но время от времени эта способность была бы полезной, особенно в рамках нескольких методов класса. Возможно, это может быть частью больших усилий по обеспечению большей поддержки неизменяемых типов в C # 5.