type new c# linq properties anonymous

type - new object c#



Configuración de nombre de propiedad de tipo anónimo (2)

Digamos que tengo el siguiente código:

string SomeConst = "OtherName"; var persons = GetPersons(); //returns list of Person var q = persons.Select(p => new { SomeConst = p.Name });

Básicamente, esperaría tener una secuencia q de tipo anónimo con la propiedad denominada OtherName y no SomeConst . ¿Cómo puedo lograr tal comportamiento?


La única forma en que estoy al tanto de que puede agregar dinámicamente propiedades cuyo nombre se desconoce en el momento de la compilación es ExpandoObject:

var q = persons.Select(p => { dynamic obj = new ExpandoObject(); obj.Name = p.Name; return obj; });

Pero realmente no veo ningún interés en hacer tal cosa. Probablemente es un muy mal diseño / idea para hacerlo. Indudablemente, creará un código más incómodo, ilegible e impensable que resolverá cualquier cosa ...


No puedes hacer eso. Los nombres de las propiedades de un tipo anónimo deben ser conocidos en tiempo de compilación. ¿Por qué exactamente necesitas hacer eso?

Podría lograr un efecto similar creando una secuencia de diccionarios en lugar de objetos anónimos:

string SomeConst = "OtherName"; var persons = GetPersons(); //returns list of Person var q = persons.Select(p => new Dictionary<string, string> { { SomeConst, p.Name } });