Anonymous types are immutable, ValueTuple
s are not. This is reflected in the fact that anonymous types expose properties, ValueTuple
s expose fields. Data binding almost always requires properties.
Plenty of existing code only works with reference types, not with value types. What in particular comes to mind are projections in Entity Framework: projections to value types are simply not implemented.