Avatar billede larsny Nybegynder
19. maj 2006 - 23:47 Der er 13 kommentarer

c# array?

Jeg skal bruge et array der for hver række har tre kolonner:

int, string, string

eks.
id1, navn1, beskrivelse1, orden1
id2, navn2, beskrivelse2, orden2
id3, navn3, beskrivelse3, orden3
id4, navn4, beskrivelse4, orden4
osv.

Hvordan opretter jeg dette array.
Jeg ved ikke hvor mange rækker der kommer til at være i arrayet da det vil varierer.

Jeg kunne også godt tænke mig at vide hvordan jeg løber den igennem, og udskriver indholdet.

Og til sidst hvordan man sortere efter orden?

På forhånd tak
Avatar billede arne_v Ekspert
20. maj 2006 - 00:25 #1
lav en klasse med 3 fields/properties

og lav så en collection af den klasse
Avatar billede snepnet Nybegynder
20. maj 2006 - 10:45 #2
Hvis du arbebjder med 2.0 - kan du lave sådan noget som det her:

using System;
using System.Collections.Generic;
using System.Text;

namespace GenericStuff
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Person> personer = new List<Person>();
            personer.Add(new Person(1, "hans", "en eller anden beskrivelse", 3));
            personer.Add(new Person(2, "bent", "blahblah", 1));
            personer.Add(new Person(3, "grete", "skriverier", 2));

            // udvælgelse 1
            Person bent = personer.Find(
                delegate(Person p)
                {
                    if (p.Name == "bent")
                        return true;
                    return false;
                });
            Console.WriteLine(bent.Name);

            // udvælgelse 2
            Person grete = personer.Find(
                delegate(Person p)
                {
                    if (p.Description.Contains("skriverier"))
                        return true;
                    return false;
                });
            Console.WriteLine(grete.Description);

            // sortering           
            personer.Sort(
                delegate(Person p1, Person p2)
                {
                    return p1.Orden.CompareTo(p2.Orden);
                });

            // gennemløb
            foreach (Person person in personer)
            {
                Console.WriteLine(person.Name);
            }
        }
    }

    public class Person
    {
        private int m_Id;
        private string m_Name;
        private string m_Description;
        private int m_Orden;

        public int Orden
        {
            get { return m_Orden; }
            set { m_Orden = value; }
        }
   

        public string Description
        {
            get { return m_Description; }
            set { m_Description = value; }
        }

        public string Name
        {
            get { return m_Name; }
            set { m_Name = value; }
        }


        public int Id
        {
            get { return m_Id; }
            set { m_Id = value; }
        }

        public Person(int id, string name, string description, int orden)
        {
            m_Id = id;
            m_Name = name;
            m_Description = description;
        }
    }
}

Nu er det så lavet som en konsol-applikation, men du kan jo kigge lidt på mulighederne idet.
Fremvisning på en webform kan du fikse ved alm. databinding - f.eks. til et datagrid:

someDataGrid.DataSource = personer;
someDataGrid.DataBind();

Hvor someDataGrid så er et datagrid du har lagt ind på din side.

Hvis du benytter 1.1 - og vil lave en typestærk liste skal du skrive lidt mere kode for at realisere det.

Du kan i begge versioner også bruge en DataTable, og oprette de kolonner som du har behov for... Det kan give dig tilsvarende muligheder.
Hvis de data du arbejder med alligevel kommer fra en database, er det er ret nem løsning.

Mvh
Avatar billede larsny Nybegynder
23. maj 2006 - 19:30 #3
Glemte at skrive det var til min hjemmeside...

Er der ikke en mere simpel måde at gøre det på?
Avatar billede arne_v Ekspert
23. maj 2006 - 19:33 #4
det kan vel ikke vaere meget simplere ?

(det er jo ikke sikkert at du behoever al funktionaliteten i snepnets eksempel)
Avatar billede larsny Nybegynder
23. maj 2006 - 19:49 #5
jeg har denne kode:

<%List personer = new List();

OdbcCommand MyCommand = new OdbcCommand(sql, Conn);
OdbcDataReader rs = MyCommand.ExecuteReader();
while (rs.Read())
{

}
%>

Men når jeg prøver at lave listen får jeg fejlen:
The type or namespace name 'List' could not be found

jeg har prøvet at sætte nedenstående ind, men det gav også fejl:
System.Collections.Generic
Avatar billede snepnet Nybegynder
23. maj 2006 - 19:57 #6
Eksemplet er baseret på at du benytter 2.0 ... Gør du det?
(Hvilken version af Visual Studio (eller andet udviklingsmiljø) bruger du?)
Mvh
Avatar billede arne_v Ekspert
23. maj 2006 - 19:57 #7
du skal importere namespace System.Collections.Generic

og saa skal du angive hvad din List er en List af

ikke List men List<dintype>
Avatar billede larsny Nybegynder
23. maj 2006 - 19:58 #8
nej bruger ikke 2.0...

Jeg bruger et program der hedder HTML-kit...
Skriver alt koden selv.
Avatar billede snepnet Nybegynder
23. maj 2006 - 20:00 #9
Mmm.... hvis du ikke benytter version 2.0 af frameworket, kan du ikke bruge generics.
Så skal du igang med lidt mere håndarbejde for at lave en custom collection.
Mvh
Avatar billede larsny Nybegynder
23. maj 2006 - 20:02 #10
det er lige før det er lettere bare at sætte det ind i et komma-sepereret streng og så selv splitte det ud...
Avatar billede arne_v Ekspert
23. maj 2006 - 20:05 #11
eller bare bruge en ArrayList og caste naar man henter ud
Avatar billede snepnet Nybegynder
23. maj 2006 - 20:08 #12
Det er jo ikke nødvendigvis et spørgsmål om hvorvidt det er let.... Holdbare løsninger er sjældent de letteste.
Du kan også bare instantiere dig en OleDbDataAdapter og et DataSet - og så bruge det... Så skal du ikke skrive noget synderlig kode, men det er ikke så godt at arbejde med.

OdbcCommand MyCommand = new OdbcCommand(sql, Conn);
OdbcDataAdapter adapter = new OdbcDataAdapter(MyCommand);
DataSet data = new DataSet();
adapter.Fill(data);

Så har du et dataset som indeholder det du har hentet med din select.

Hvorfor bruger du odbc... Hvad er det for en database du "snakker" med?

Mvh
Avatar billede arne_v Ekspert
18. juni 2006 - 20:54 #13
tid at få afsluttet her ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester