Почему анонимные типы не имеют методов set свойства?
var a = new { Text = "Hello" };
a.Text = "World"; //error
Анонимные типы неизменяемы изначально.
Анонимные типы предназначены для хранения значений, и тип, представляющий значение, не должен быть изменяемым.
Кроме того, это сделало бы их ненадежными в словаре, так как хэш-код мог измениться после создания.
Многие методы LINQ используют словари, и, особенно с отложенным вычислением, LINQ с изменяемыми типами может привести к незаметным загадочным ошибкам.