C#: Loopa igenom tvådimensionell array?

Permalänk
Medlem

C#: Loopa igenom tvådimensionell array?

Hej!

Jag skulle vilja veta hur jag loopar mig igenom en (hel) tvådimensionell array, där storlekarna på arrayerna skiljer sig från varandra.

string[,] olikaSaker = new string[,] { // bilar { "sedan", "stadsjeep", "kombi" }, // hus { "villa", "radhus", "lägenhet", "stuga", "husvagn", "tält" }, // möber { "stol", "bord" }, };

Hur gör jag för att gå igenom alla strängar i denna tvådimensionella array? Jag har försökt att göra det på det här sättet:

for (int x = 0; x <= olikaSaker.GetUpperBound(0); x++) { for (int y = 0; y <= olikaSaker.GetUpperBound(1); y++) Console.WriteLine(x + "," + y + " = " + olikaSaker[x, y]); }

Men det fungerar inte som jag vill att det ska. Alla strängar skrivs inte ut.

Tackar på förhand!

Permalänk
Medlem
Permalänk
Hedersmedlem

Vilka strängar skrivs ut? Jag är inte helt bekant med C# och den där syntaxen men det ser ju i princip rätt ut.

EDIT: Det kan väl dock uppstå problem med den där typen av nästlade loopar när varje rad inte är av samma längd?

Permalänk
Medlem

Avänd foreach-loop. Om du måste använda for loop så skriv olikasaker.Length och olikasaker[x].Length i andra loopen

Skickades från m.sweclockers.com

Permalänk
Medlem
Skrivet av Santrium:

Hej!

Jag skulle vilja veta hur jag loopar mig igenom en (hel) tvådimensionell array, där storlekarna på arrayerna skiljer sig från varandra.

string[,] olikaSaker = new string[,] { // bilar { "sedan", "stadsjeep", "kombi" }, // hus { "villa", "radhus", "lägenhet", "stuga", "husvagn", "tält" }, // möber { "stol", "bord" }, };

Hur gör jag för att gå igenom alla strängar i denna tvådimensionella array? Jag har försökt att göra det på det här sättet:

for (int x = 0; x <= olikaSaker.GetUpperBound(0); x++) { for (int y = 0; y <= olikaSaker.GetUpperBound(1); y++) Console.WriteLine(x + "," + y + " = " + olikaSaker[x, y]); }

Men det fungerar inte som jag vill att det ska. Alla strängar skrivs inte ut.

Tackar på förhand!

Kort och gott:

foreach (var a in collectionofcollection) foreach (var b in a) { // do your stuff }

Om du inte behöver behandla varje element separat kan du "dra ut" nästlade collections med SelectMany:

a.SelectMany(b => b(.GörNågontingEllerReturneraMig())); // parantes frivillig

Visa signatur

Kom-pa-TI-bilitet