Tableau nombre de ligne ?

Signaler
Messages postés
141
Date d'inscription
lundi 24 décembre 2001
Statut
Membre
Dernière intervention
5 juillet 2007
-
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
-
Bonjour, question de débutant : j'initialise un tableau en C# et j'aimerai savoir s'il existe une propriété de ce tableau pour connaitre le nombre de dimension (le nombre de lignes du tableau) ? (pour pouvoir boucler dessus)

Merci ,

----

 

8 réponses

Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
1
Tab.GetLength(0) donne la taille de la première dimension (colonne par ex)
Tab.GetLength(1) donne la taille de la deuxième dimension (ligne par ex)
Messages postés
14389
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 juin 2020
413
Bonsoir, 8 ans après, est ce vraiment utile, alors que la réponse est déjà simple à trouver partout?
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
1
Je ne met la réponse que parce que j'ai du la chercher moi-même. Ainsi les prochains n'auront pas besoin de chercher plus loin. Et si c'était vraiment aussi simple comme réponse, pq personne ne lui a donnée à l'époque???

Bien à vous
Messages postés
81
Date d'inscription
vendredi 1 février 2002
Statut
Membre
Dernière intervention
8 octobre 2007

Différentes infos s'offrent à toi
tab.Length (nombre d'éléments toutes dimensions confondues sur 32 bits)


tab.LongLength (nombre d'éléments toutes dimensions confondues sur 64 bits)



tab.Rank (nombre de dimensions)

Sinon pour boucler dessus, regarde la structure foreach.
Exemple pour un tableau d'entier :
foreach (int i in tab)
 traitements...;

Warwick.
Messages postés
141
Date d'inscription
lundi 24 décembre 2001
Statut
Membre
Dernière intervention
5 juillet 2007

tab.Length






tab.LongLength






tab.Rank



Ces 3 propriétés ne me donnent pas le nombre de ligne dans mon tableau ?.

Sinon le foreach est pas mal mais dans mon cas n'est pas adapté car par exemple dans mon tableau j'ai une liste de voiture disons :
tab[0][0]="6587YA29" // immatriculation
tab[0][1]="peugeot" // marque
tab[0][2]="noir" //couleur
etc ..

Je veux l'afficher dans un tableau html :

foreach (
object obj
in resultat)
{
Response.Write(
"<tr>");

if (obj
is
int)
Response.Write(
"<td>" + (
int)obj +
"</td>");

else
if (obj
is
String)
Response.Write(
"<td>" + (
String)obj +
"</td>");
Response.Write(
"</tr>");
}

Forcement ca ne fonctionne pas car il ne passe pas ligne par ligne de tableau..

Bref je suis bloqué ..
Messages postés
81
Date d'inscription
vendredi 1 février 2002
Statut
Membre
Dernière intervention
8 octobre 2007

Ton tableau est comme une matrice,
il faut faire un double for peut être genre

for (int i = 0, i < tab.Length; i++)
{
   

Response.Write(

"<tr>"
);






   
for (int j = 0, j < tab.Rank; j++)
    {
       

if
(tab[i][j]

is
int
)
        Response.Write(

"<td>"
+ (

int
)




tab[i][j]




+

"</td>"
);


        else
if
(




tab[i][j]







is
String
)
        Response.Write(

"<td>"
+ (

String
)




tab[i][j]




+

"</td>"
);






    }
   

Response.Write(

"</tr>"
);







}





Bref, là j'ai rien pour tester mais peut être un truc dans ce gout là...

Warwick.
Messages postés
141
Date d'inscription
lundi 24 décembre 2001
Statut
Membre
Dernière intervention
5 juillet 2007

Oui je suis d accord c'est la bonne méthode mais le tab.Length ne me retourne pas le nombre de ligne du tableau !! Ca retourne autre chose je sais pas quoi mais le nombre de ligne dans le tableau ... ??
Messages postés
141
Date d'inscription
lundi 24 décembre 2001
Statut
Membre
Dernière intervention
5 juillet 2007

Peut etre que ca ne fonctionne pas car j'utilise pas un Array mais un Object ..


Sinon j'ai trouvé un autre moyen de recuperer le nombre de ligne, c'est plus long mais ca fonctionne
Messages postés
81
Date d'inscription
vendredi 1 février 2002
Statut
Membre
Dernière intervention
8 octobre 2007

tab.Length te retourne le nombre total de "cases" du tableau je crois, et tab.Rank le nombre de dimensions.

En divisant tab.Length par tab.Rank, tu as normalement le nombre de lignes.

Warwick.
Messages postés
31
Date d'inscription
mardi 6 novembre 2007
Statut
Membre
Dernière intervention
23 février 2009

bonjour c'est absolument ce que je cherche mais apparement ce n'est pas terminer.

j'annonce je suis débutant :)

juste une chose, moi mes donnée sont issue d'une table sous sql server 2005. la connexion a sql server est faite, et fonctionne correctement (c'est la seul chose d'ailleur lol)
je veut mettre dans ce tableau (en html) ces donnée (de ma table) , mon tableau doit etre dynamique

voila mon code je ne pense pas que tout les "data" doivent etre utile


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using score_lib;
using System.Data.SqlClient;
using System.IO;
using System.Data.Common;

namespace gestscore
{
    public partial class Import_data2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //ouverture de connexion avec la chaine de connection
            Cscore_lib instance1 = new Cscore_lib();
            SqlConnection connexion = new SqlConnection(instance1.chaine_de_connexion());
            connexion.Open();
            //gestion des exeption
            try
            {
                //lancement de la procedure stocké import_data2
                string id_indicateur = Request.Form["id"];
                SqlCommand commande4 = null;
                commande4 = new SqlCommand("Import_Data2", connexion);
                commande4.CommandType = CommandType.StoredProcedure;

                //entrée des parametre de la procédure sotckée
                SqlParameter parametre_id = new SqlParameter("@ID", SqlDbType.VarChar, 0);
                parametre_id.Value = id_indicateur;
                commande4.Parameters.Add(parametre_id);
                SqlParameter erreur = new SqlParameter("@nbrowscum", SqlDbType.Int, 4);
                erreur.Direction = ParameterDirection.Output;
                commande4.Parameters.Add(erreur);


                string strRequete = "SELECT * FROM majpz order by IDlibelle, IDgeo, periode";
                // Objet Command
                SqlCommand command = new SqlCommand(strRequete, connexion);
                // création du dataset
                DataSet ds = new DataSet();
                //création d'une datatable
                DataTable majpz = new DataTable("majpz");

                             
                
                for (int i = 0, i < majpz.Length, i++);
                    {
                        Response.Write( "<tr>" ); 
                        for (int j = 0, j < tab.Rank, j++);
                        {
                            if (tab[i][j] is int )
                            Response.Write( "<td>" + ( int ) tab[i][j] + "</td>" );
                            else if ( tab[i][j] is String )
                            Response.Write( "<td>" + ( String ) tab[i][j] + "</td>" ); 
                        }
                        Response.Write( "</tr>" ); 
                    }

                //création du data adapter
                SqlDataAdapter da_majpz = new SqlDataAdapter();              
                

                //equivalent du system"pause"(attente de saisie de l'utilisateur)
                Console.ReadLine();
                                
            }
            catch (SqlException sqlerr)
            {
                Response.Write("<table>");
                Response.Write("
" + sqlerr.Message.ToString());
            }
            // Fermeture connection
            connexion.Close();
        }
    }
}



donc majpz est ma table remplis précedement par une requete paramétré
voila je sui a votre ecoute et ca fait 2 semaine que je suis sur ce probleme