Perhaps I'm going against the grain with some people, but I prefer to have as much work done to cause errors to Fail Early. I love with my ORM generator that if someone mucks with the database that my code that was written based on the entity members will fail to compile rather than being strings that hide the error until they are used.
filter.PredicateExpression.Add(QuoteFields.FieldName == someValue)
vs
filter.PredicateExpression.AddEquals("FieldName", someValue)
The former will let me know if FieldName was lost or renamed (and in the case of a rename, I can use my refactoring tools to fix the entire project at once).
Moving to more strings that do magical things? Not my preference. On the other hand, COM interop and dynamic language interop are wonderful.