2010-06-15 2 views

Antwort

21

Seit Array implementiert IEnumerable Sie dies nur tun können:

var arr = new int[2, 2] {{1,2}, {3, 4}}; 
int max = arr.Cast<int>().Max(); //or Min 
+5

Für zukünftige Suchende, http://StackOverflow.com/a/641565 für Jagged Arrays ie. 'int [] [] SomeArray = ...;', benutze 'var Flattened = SomeArray.SelectMany (x => x)' was die Enumeratoren aggregiert. Dann können Sie einfach 'Flattened.Max()' zum Beispiel tun. – HodlDwon

+1

Josh: Korrigieren Sie mich, wenn ich falsch liege, aber so wie ich das sehe, würden Sie das gesamte Array in ein anderes abgeflachtes Array kopieren, nur um eine maximale Suche durchzuführen, die zuerst den Kopieraufwand und dann noch einen O (n) verursacht und hat daher eine schreckliche Gesamtkomplexität für solch ein einfaches Problem. Manchmal ist Eleganz und Kürze wirklich nicht alles. – Tom

0

Sie können eine Liste> implementieren und Min- und Max-Foreach suchen und in einer Liste speichern. Dann können Sie Min() und Max() aus der Liste aller Werte in einer eindimensionalen Liste leicht finden. Das ist das erste, was mir in den Sinn kommt, ich bin selbst neugierig und werde sehen, ob Google einen saubereren Ansatz wählen kann.

+0

Wie würden Sie überhaupt bekommen ein zweidimensionales Array in eine Liste an erster Stelle? – devuxer

+0

Ah, ich dachte zu weit voraus, jetzt merke ich, wenn Sie das Array in eine Liste bringen würden, könnten Sie den Code verwenden, um die MIN/MAX aus der gleichen Schleife herauszuholen, die ich für die Listen vorgesehen hatte. :/war eine lange Trauer mit nicht genug Kaffee: D –

+0

Sie können das Array abflachen, @devuxer – Zimano

6

Dies scheint zu funktionieren:

IEnumerable<int> allValues = myArray.Cast<int>(); 
int min = allValues.Min(); 
int max = allValues.Max(); 
0

hier Variante:

var maxarr = (from int v in aarray select v).Max(); 

wo aArray int [ist, ]