LINQ ermöglicht die Erfassung durch ein Verfahren zu einer anderen Sammlung, dhTransform, ein Objekt zu einem anderen, LINQ-style
var x = SomeMethod().Select(t => new { ... });
Nun zurück zu elegant-Transformation, eine präzise Art und Weise, den Rückgabewert zu transformieren, in C# bestehen einer Methode ohne eine Zwischenvariable einzuführen? Deklarieren und den Aufruf einer Lambda scheint zu funktionieren, aber ist ziemlich hässlich:
var x = new Func<T, object>(t => { return new { ... }; })(SomeMethod());
Fehle ich etwas offensichtlich oder ist dies das Beste, was man heute mit C# tun?
Warum würden Sie denken, dass Code hässlich ist? Das einzige, was ich tun würde, ist 'var' durch den tatsächlichen Rückgabetyp zu tauschen und den Objekttyp anzugeben (falls zutreffend), aber ansonsten halte ich das für einen akzeptablen Code. – hbulens
[Tuple Dekonstruktion] (https://docs.microsoft.com/en-us/dotnet/csharp/tuples#deconstruction) ist nicht vollständig allgemein, aber in einigen Szenarien anwendbar. Im Allgemeinen sehe ich wirklich nicht, was falsch ist mit (keuchen!) Schreiben * zwei Zeilen * Code statt eins ('var x = SomeMethod(); var y = neu {x.foo, x.bar, .. .} '). Es gibt keine Steuer auf Linien oder Variablen, und es ist auch nicht so, dass irgendetwas kürzeres die Vermittler sowieso nicht unter die Decke bringt. –
@ JeroenMostert stimme ich voll und ganz zu. Ich stelle diese Frage hauptsächlich aus intellektueller Neugierde. –