LINQは今、戻り値を変換するためのC#で簡潔な方法があるすなわちが別のオブジェクトを変換し、LINQスタイル
var x = SomeMethod().Select(t => new { ... });
、エレガント別のコレクションにメソッドによって返されたコレクションを変換することができます仲介変数を導入しない方法のラムダを宣言して呼び出すと動作するようですが、かなり醜いです:
var x = new Func<T, object>(t => { return new { ... }; })(SomeMethod());
私が何かを明らかに不足しているか、これは1つが、今日のC#でできる最善であるだろうか?
なぜコードが醜いと思いますか?私が行う唯一の方法は、 'var'を実際の戻り値の型と入れ替え、オブジェクト型を指定することです(該当する場合)。そうでなければ、それは受け入れ可能なコードだと思います。 – hbulens
[タプル解体](https://docs.microsoft.com/en-us/dotnet/csharp/tuples#deconstruction)は完全に一般的ではありませんが、いくつかのシナリオでは適用可能です。一般的に、私は実際に何か間違っているのを見ていません(気分!)* 2行*のコードではなく、(var x = SomeMethod(); var y = new {x.foo、x.bar、.. }})。行や変数には税金はありません。とにかく、カバーの下にある仲介業者を使用していないほど短くはありません。 –
@ JeroenMostert私は完全に同意します。私は知的好奇心からこの質問を主に求めています。 –