Setting anonymous type property name
开发者_如何学PythonLet's say I have the following piece of code:
string SomeConst = "OtherName";
var persons = GetPersons(); //returns list of Person
var q = persons.Select(p =>
new
{
SomeConst = p.Name
});
Basically I'd expect to have in q sequence of anonymous type with the property named OtherName and not SomeConst. How can I achieve such a behaviour?
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...
精彩评论