24. april 2008 - 13:49Der er
11 kommentarer og 1 løsning
blande strings og DateTime i en foreach
Hej
jeg har lavet en foreach, hvor jeg gerne vil have datoer tilbage som passer på navnet, eller en string som fortæller "at der ikke er nogle reservationer". Er det umiligt at blade forskellige typer, når jeg skriver public DateTime getnavn?
public DateTime getnavn(string navn) { foreach (Reservering en_reservering in reserveringsliste)
if (en_reservering.PropertyReserveringsnavn == navn) { return en_reservering.PropertyDato; } return "vedkomende har ikke nogle reservationer; }
Jeg forstår ikke hvorfor du vil retunere en dato. Du laver en foreach løkke, og løber alle reservationer igennem.
Men du vil kun retunere en datetime værdi.
Som jeg ser det er der 2 mulige senarier :
1. Du vil vide om han har mindst en reservation. I så fald ville jeg retunere en bool værdi i stedet for.
2. Du vil vide præcis hvor mange reservationer han har samt hvilke dage har har reservationer.
I så fald er det jo ikke nok at retunere en datetime værdi. Så bliver du nødt til at oprette et eller andet form for dataset, hvor du så kommer alle de dato'er ind i hvor han har reservationer, og så retunerer det dataset i stedet for.
Hvis datasettet så indeholder 0 poster, så har han jo ingen reservationer.
jeg har nu lavet public List<DateTime> sublistNavne = new List<DateTime>();
public string datoer_makeDatoSublist(string navn) { foreach (Reservering en_reservering in reserveringsliste)
if (en_reservering.PropertyReserveringsnavn == navn)
{ sublistNavne.Add(en_reservering.PropertyDato);
}
return "DATOERNE ER TILFØJET TIl NAVNET"; }
og
public DateTime[] datoer_GetAllDatoSublist() { return sublistNavne.ToArray();
}
det er bare mærkeligt at jeg får en fejl når jeg i min Windows form kalder sublisten
{ Reservering r1 = new Reservering("silas", new DateTime(2008, 04, 22)); Reservering r2 = new Reservering("kurt", new DateTime(2008, 04, 23)); Reservering r3 = new Reservering("Peter", new DateTime(2008, 04, 24)); Flaske f1 = new Flaske(r1, "ok", 43); f1.addReservartion(r2); f1.addReservartion(r3);
så får jeg: Error 4 The best overloaded method match for 'System.Windows.Forms.ListBox.ObjectCollection.AddRange(System.Windows.Forms.ListBox.ObjectCollection)' has some invalid arguments
og
Error 5 Argument '1': cannot convert from 'System.DateTime[]' to 'System.Windows.Forms.ListBox.ObjectCollection'
har prøvet null men får fejl, har nu brugt Lasses ide om en tom liste
return sublistNavne.ToArray();
så det bliver public List<DateTime> sublistNavne = new List<DateTime>();
public DateTime[] datoer_makeDatoSublist(string navn) { foreach (Reservering en_reservering in reserveringsliste)
if (en_reservering.PropertyReserveringsnavn == navn)
{ sublistNavne.Add(en_reservering.PropertyDato);
}
return sublistNavne.ToArray(); }
men får disse fejl: Error 4 The best overloaded method match for 'System.Windows.Forms.ListBox.ObjectCollection.AddRange(System.Windows.Forms.ListBox.ObjectCollection)' has some invalid arguments Error 5 Argument '1': cannot convert from 'System.DateTime[]' to 'System.Windows.Forms.ListBox.ObjectCollection'
når jeg kalender dem i min wondows form
private void button8_Click(object sender, EventArgs e) { Reservering r1 = new Reservering("silas", new DateTime(2008, 04, 22)); Reservering r2 = new Reservering("kurt", new DateTime(2008, 04, 23)); Reservering r3 = new Reservering("Peter", new DateTime(2008, 04, 24)); Flaske f1 = new Flaske(r1, "ok", 43); f1.addReservartion(r2); f1.addReservartion(r3);
har fundet frem til at fejlen nok skyldes at man ikke kan udskrive en liste af DateTime objekter som ToArray, kan man lave en override af DateTime ToString for på den måde at løse problemet?
public DateTime[] datoer_GetAllDatoSublist() { return sublistNavne.ToArray();
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.