Toon posts:

[C#] Multidimensionele array

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey,

Ik zou graag willen weten hoe ik de volgende soort array declareer in C# (indien mogelijk)

array [int,int] = string;

Ik heb al verschillende keren op google gezocht en heb al naar andere oplossing gekeken. Datatables en Collections zien er mij nogal ingewikkeld uit en ik heb niet echt genoeg kennis om ze toe te passen.

Alvast dank

  • Twilight Burn
  • Registratie: Juni 2000
  • Laatst online: 12-11 13:11
Je hebt twee soorten multidimensionale arrays in C#. Je hebt de matrix (NxM vorm) die je op de volgende manier declareerd:
string[,] NAAM;

Je hebt echter ook "jagged" array, waarbij de lengtes voor iedere NAAM[i] kunnen verschillen:
string[][] NAAM;

In het eerste geval gebruik je NAAM[i,j] om een element te benaderen, in het 2e geval NAAM[i][j]

[ Voor 16% gewijzigd door Twilight Burn op 04-11-2006 00:41 ]


Verwijderd

Topicstarter
Hmmm :) maar kan ik dat nu zo toepassen dat ik

array[integer,integer] = string;

krijg. Ik heb al vanalles geprobeerd.

Wat ik probeer te bereiken is dat de data van een SQLiteDataReader vanuit een class die de database connectie handled naar het programma word ge'return'ed. Omdat ik verschillende database classes ga maken ( voor bv mysql/access) wil ik dat hij de data returned in een 'neutrale' (iets dat altijd standaard aanwezig is in C#) set.

Beetje code

Functie uit de database class
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public int[][] getSeries()
{
            int[][] data = new int[100][];

            SQLiteCommand X = C.CreateCommand();

            X.CommandText = "SELECT sID, sNAME FROM shows"; 
            
            SQLiteDataReader Rdr = (SQLiteDataReader) X.ExecuteReader(); 
            
            while (Rdr.Read()) { 
                data[Rdr.GetInt16(0)] = new int[1];
                data[Rdr.GetInt16(0)][0] = Rdr.GetString(1); // <<< dit werkt dus nu niet
            }

            return data;
}


Code in main loop
C#:
1
2
3
4
5
6
7
8
9
10
public frmMain()
{
            InitializeComponent();

            database = new dbSQLITE();

            int[][] data = new int[100][];

            data = database.getSeries();
}



PS : Indien je ergens tips of tricks hebt mag je die altijd geven :) ben nog maar paar daagjes met C# bezig.

  • Twilight Burn
  • Registratie: Juni 2000
  • Laatst online: 12-11 13:11
Ik denk dan dat je de gewone matrix bedoeld:

C#:
1
string[,] test1 = new string[5, 5];


Met de string[][] maak je een jagged array, je moet dan ieder sub-array opnieuw aanmaken:
C#:
1
2
3
4
string[][] test2 = new string[5][];
for (int i = 0; i < 5; i++) {
    test2[i] = new string[i];
}

Waarbij ieder sub-array een andere lengte kan hebben (zie voorbeeld hierboven)

[edit]
Je code werkt niet omdat je een string in een integer array probeert te stoppen. Trouwens, het is sowieso niet slim om een array hiervoor te gebruiken omdat je niet weet hoeveel records je terugkrijgt. Je kunt hier beter een collection voor te gebruiken (bijv. een Generic list, er vanuitgaande dat je c# 2.0 gebruikt)

C#:
1
2
3
4
5
List<string> data = new List<string>();
//CODE
while (rdr.Read()) {
    data.Add("iets");
}

[ Voor 36% gewijzigd door Twilight Burn op 04-11-2006 01:22 ]


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
idd je probeert zo te zien een lijst van shows uit je database te halen dus dan kan je beter iets als het volgende doen ( .net 2.0 )
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public List<Serie> getSeries()
{
    List<Serie> series = new List<Serie>();
    SQLiteCommand X = C.CreateCommand(); 

    X.CommandText = "SELECT sID, sNAME FROM shows";  
             
    SQLiteDataReader Rdr = (SQLiteDataReader) X.ExecuteReader();  
             
    while (Rdr.Read()) {
        Serie serie = new Serie( Rdr.GetInt(0), Rdr.GetString(1) );
        series.Add( serie );
    }
    return series;
}

Dan moet je nog wel even een object Serie definieren.

[ Voor 4% gewijzigd door Woy op 04-11-2006 09:55 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:15
Hoe je een dergelijke array declareert, dat moet je toch wel in de MSDN vinden. Gewoon zoeken op multi-dimensional arrays, en je zou al eea moeten vinden.

Over die DB classes die je wil maken: er zijn hier al een paar topics op GoT daarover geopend, dus misschien vind je die ook wel interessant.
Echter, als je -zoals je zelf zegt- nog een beginner bent in C#, en de concepten Collections / DataTables, etc... nog niet goed kent, dan zou ik daar toch eerst eens even naar kijken. Ik bedoel: eerst leren gaan, en dan pas leren lopen. :)

https://fgheysels.github.io/


Verwijderd

Topicstarter
dankje rwb :) met jouw hulp en een beetje gegoogle van mezelf ben er geraakt.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Overigens ben ik het wel met whoami eens. Je kan beter eerst eens goed de basis van de taal leren voordat je allerlei dingen met databases gaat doen. Dit soort dingen zijn niet echt complex. Je kan beter eerst de taal goed leren kennen en dan pas echte projecten gaan maken.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Ruudjah
  • Registratie: November 1999
  • Laatst online: 06-09 20:58

Ruudjah

2022

DIT BERICHT IS PREVENTIEF VERWIJDERD DOOR DE GEBRUIKER

[ Voor 95% gewijzigd door Ruudjah op 01-12-2009 21:55 ]

TweakBlog

Pagina: 1