Zum Inhalt springen

[c# .net] Date.Time in Arraylist


Empfohlene Beiträge

Geschrieben

Moin moin,

ich möchte gerne eine Array.List mit den letzten Zugriffszeiten mehrerer Dateien füllen.

Dafür benutze ich folgenden Code:

DateTime ldtLstAcs = DateTime.Now;


                for (int i2 = 0; i2 < SelectedItems.Count; i2++)

                {


                    ldtLstAcs = File.GetLastAccessTime(MapPathSecure("/source/" + SelectedItems[i2]));



                    ArrayList lastAccess = new ArrayList();

                    [COLOR="Red"]foreach[/COLOR] (ListItem itm2 in [COLOR="Red"]ldtLstAcs[/COLOR])

                    {


                            lastAccess.Add(itm2.Value);


                    }


                }

Das Problem dabei ist nur, dass Foreach mit dem Date.Time der variablen nicht klar kommt.....

Er gibt mir da folgenden Fehler:

Eine foreach-Anweisung kann nicht für Variablen vom Typ "System.DateTime" verwendet werden, da "System.DateTime" keine öffentliche Definition für "GetEnumerator" enthält.

Vill. kann mir ja einer helfen und sagen was ich anders machen muss!

Danke

gruß

Horstiii

Geschrieben

ArrayList ist aus System.Collections.

Und bei den "alten" Collections brauch foreach Objekte, die einen Enumerator implementieren.

Nimm doch stattdessen folgenden Code ab .NET 2.0 aus

System.Collections.Generic:

			List<DateTime> liste = new List<DateTime>();

			liste.Add(DateTime.Now);

			liste.Add(DateTime.Now);

			liste.Add(DateTime.Now);

			liste.Add(DateTime.Now);

			liste.Add(DateTime.Now);

			foreach ( DateTime dt in liste )

				Console.WriteLine(dt);

Geschrieben
ArrayList ist aus System.Collections.

Und bei den "alten" Collections brauch foreach Objekte, die einen Enumerator implementieren.

Falsch. Foreach braucht immer ein IEnumerable-Object.

DateTime implementiert IEnumerable nur nicht.

Nix mit alt oder neu.

Geschrieben

Aufjedenfall funktioniert die Lösung von VaNaTiC !!

Dankeschön

Und da hab ich direkt noch eine Frage..... und zwar wie kann ich das machen dass er mir alle heraussucht die älter als z.b. 2 Tage sind.

Geschrieben (bearbeitet)

Nach

List<DateTime> liste = new List<DateTime>();

			liste.Add(DateTime.Now);

			liste.Add(DateTime.Now);

			liste.Add(DateTime.Now);

			liste.Add(DateTime.Now);

			liste.Add(DateTime.Now);

			foreach ( DateTime dt in liste )

				Console.WriteLine(dt);

kannst du es mit


DateTime vorgestern= System.DateTime.Now.Date.AddDays(-2);


foreach ( DateTime dt in liste )

{


            if (dt.Date <= vorgestern) // vllt. <, je nachdem was du willlst

            {

                Console.WriteLine(dt);

            }

}


versuchen. Aber auch ein blick in die Hilfe (VS 2008 cursor auf "DateTime" und mutig auf [F1] drücken) hätte sicher geholfen. Viel spaß.

p.s.: wenn dir foreach nicht performant genug erscheint, kannst du auch Delegates benutzen

p.p.s.: Ja, DateTime ist nicht IEnumerable, aber List<T> schon...

edit

p.p.s.: DateTime.Date ist vllt. angebrachter, wenn es dir ums Datum geht, soll auch die Zeit verglichen werden, nutze DateTime (z.B. Heute ist 18h Vorgesten um 17h soll mit angezeigt werden), aber auch hier hilft die Hilfe, oder ein Breakpoint (VS 2008 [F9]) fürs Verständnis.

/edit

Bearbeitet von Kosinator
Geschrieben
Falsch. Foreach braucht immer ein IEnumerable-Object.

DateTime implementiert IEnumerable nur nicht.

Nix mit alt oder neu.

Das ist nicht ganz richtig.

List<T> implementiert IEnumerable<of T>.

Geschrieben
Nach

List<DateTime> liste = new List<DateTime>();

			liste.Add(DateTime.Now);

			liste.Add(DateTime.Now);

			liste.Add(DateTime.Now);

			liste.Add(DateTime.Now);

			liste.Add(DateTime.Now);

			foreach ( DateTime dt in liste )

				Console.WriteLine(dt);

kannst du es mit


DateTime vorgestern= System.DateTime.Now.Date.AddDays(-2);


foreach ( DateTime dt in liste )

{


            if (dt.Date <= vorgestern) // vllt. <, je nachdem was du willlst

            {

                Console.WriteLine(dt);

            }

}


versuchen. Aber auch ein blick in die Hilfe (VS 2008 cursor auf "DateTime" und mutig auf [F1] drücken) hätte sicher geholfen. Viel spaß.

p.s.: wenn dir foreach nicht performant genug erscheint, kannst du auch Delegates benutzen

p.p.s.: Ja, DateTime ist nicht IEnumerable, aber List<T> schon...

edit

p.p.s.: DateTime.Date ist vllt. angebrachter, wenn es dir ums Datum geht, soll auch die Zeit verglichen werden, nutze DateTime (z.B. Heute ist 18h Vorgesten um 17h soll mit angezeigt werden), aber auch hier hilft die Hilfe, oder ein Breakpoint (VS 2008 [F9]) fürs Verständnis.

/edit

danke.

aber ich habe halt eine CheckBoxList wo dateien aufgeführt werden.....

nun habe ich unten noch eine checkbox hingemacht, wenn diese angehakt ist, sollen oben alle dateien deren letzter zugriff älter als 2 tage ist angehackt werden.....

wie mach ich das am besten?

Geschrieben
danke.

aber ich habe halt eine CheckBoxList wo dateien aufgeführt werden.....

nun habe ich unten noch eine checkbox hingemacht, wenn diese angehakt ist, sollen oben alle dateien deren letzter zugriff älter als 2 tage ist angehackt werden.....

Wie meinst du das genau?

for (int i = 0; i < checkedListBox1.Items.Count; i++)

{

	((CheckBox)checkedListBox1.Items[i]).Checked = (anDateiGebundenesItem).DateTime.Date <=  System.DateTime.Now.Date.AddDays(-2);

}  

so etwas, oder mehr eine "normale Liste" mit Checkboxen davor (nicht empfehlenswert), oder Checkboxen mit Dateinamen im Text-Value ?

--- mehr Infos, dann helfe ich gerne (vllt Codeschnipsel?) ---

gruß

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...