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
Ich hab nirgendswo das Gegenteil behauptet...

Stimmt, nach eingehender Prüfung des Gesprächsverlaufs, habe ich meine Fehlinterpretation erkannt :upps

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ß

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...