Często potrzebuję na przykład powiększyć obiekt o właściwość. Do tej pory (zmęczony;) i to zbyt brzydki) Zrobiłem to w ten sposób:Jak ulepszyć obiekt anonimowy w C#
var someListOfObjects = ...;
var objectsWithMyProperty = from o in someListOfObjects
select new
{
o.Name, /* Just copying all the attributes I need */
o.Address, /* which may be all of them. */
SomeNewProperty = value
};
Czy jest to sprytny sposób to zrobić? Co mam zrobić wcześniej coś takiego:
var objectsWithMyProperty = from o in someListOfObjects
select new
{
OldObject = o, /* I access all of the old properties from here */
SomeNewProperty = value
};
Chyba można to zrobić z niektórych refleksji, ale wyobrażam sobie, że jest szybsze podejście, które sprawia, że coś równoważnego do pierwszego uciążliwego podejścia.
Dzięki Lasse
Zgaduję, że można podać fantazyjne drzewo wyrażeń. Ale prawdopodobnie nie będzie działać dla Linq2SQL i przyjaciół. – leppie
Na czym polega problem z drugim podejściem? –
@Pieter Myślę, że to jest brzydkie i nie ma sensu w kontekście, w którym go używam. Fx, jeśli podasz go jako źródło danych, otrzymasz "Eval (" WhyDoIHaveToHaveANameHere.TheActualProperty ")'. –