Ich bin auf ein Problem gestoßen und ich bin mir nicht sicher, ob ich etwas verpasse oder ob es in C# wirklich klobig ist.Mapping über ein 2D-Array
Ich habe ein 2D-Array (Foo[,]
) und was ich tun möchte, ist es zu einer Bar[,]
, mit nur einem Func<Foo, Bar>
. Grundsätzlich möchte ich eine Funktorinstanz für T[,]
für jede gegebene T
. Der "offensichtliche" Weg besteht natürlich darin, einfach ein neues Array von Grund auf aufzubauen, indem man über jede Spaltenzeile und -spalte iteriert und die Funktion manuell auf jede Zelle anwendet. Ich möchte wirklich nutzen LINQ für diese allerdings machen, weil es keinen Grund gibt, was auch immer dies komplizierter sein sollte als
from cell in matrix
select f(cell)
oder das Äquivalent matrix.Select(f)
.
Ich kann nicht anders, als zu denken, dass ich nicht der Erste sein kann, der das machen wollte, also frage ich mich, ob es etwas Ähnliches gibt, oder ist meine beste Wette, einfach meine eigenen LINQ-Erweiterungen zu schreiben 2D-Arrays?
Das Schreiben einer Reihe von benutzerdefinierten LINQ-Erweiterungen scheint der einfachste und sauberste Pfad zu sein. Irgendwie mühsam, diese Art von Boilerplate-Code schreiben und pflegen zu müssen, aber naja. – kai