Let\'s say I have the following piece of code:
string SomeConst = \"OtherName\";
var persons = GetPersons(); //returns list of Person
var q = persons.Select(
You can't do that. The names of the properties of an anonymous type must be known at compile time. Why exactly do you need to do that?
You could achieve a similar effect by creating a sequence of dictionaries instead of anonymous objects:
string SomeConst = "OtherName";
var persons = GetPersons(); //returns list of Person
var q = persons.Select(p =>
new Dictionary<string, string>
{
{ SomeConst, p.Name }
});
The only way I'm aware of you can dynamically add properties whose name is unknown at compile time is the ExpandoObject :
var q = persons.Select(p => { dynamic obj = new ExpandoObject(); obj.Name = p.Name; return obj; });
But I really don't see any interest in doing such a thing. It is most probably a very bad design/idea to do so. You will undoubtly create more awkward, unreadable and unmaintenable code than you will solve anything...