Datatable nach Datum filtern

  • C#

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Flox83.

    Datatable nach Datum filtern

    Hi,

    ich habe gerade ein kleines Problem und finde leider keine Lösung dafür:

    Ich habe in einer XML-Datei ein Datum als String gespeichert (Format: 31.01.2016) und will
    nun die von der XML-Datei eingelesene Datatable filtern, zur besseren Veranschaulichung:

    25.01.2016
    26.02.2016
    27.03.2016
    28.04.2016
    29.05.2016
    30.06.2016
    31.07.2016
    01.08.2016
    02.09.2016
    03.10.2016
    04.11.2016
    05.12.2016
    06.01.2016
    07.02.2016
    08.03.2016
    09.04.2016
    10.05.2016
    11.06.2016
    12.07.2016
    13.08.2016
    14.09.2016
    15.10.2016
    16.11.2016
    17.12.2016

    Nun will ich wie folgt filtern:

    C#-Quellcode

    1. DataSet dsImport = new DataSet();
    2. DataTable dtImport = new DataTable();
    3. dsImport.ReadXml(@"C:\Temp\Export.xml");
    4. dtImport = dsImport.Tables["Export"];
    5. DataRow[] rwFilter = dtImport.Select("Datum >= #01/01/2016# And Datum <= #07/7/2016#");
    6. foreach (DataRow rw in rwFilter)
    7. {
    8. Console.WriteLine("Datum: " + rw["Datum"]);
    9. }


    jedoch erhalte ich nur folgende Ausgabe:

    Datum: 01.08.2016
    Datum: 02.09.2016
    Datum: 03.10.2016
    Datum: 04.11.2016
    Datum: 05.12.2016
    Datum: 06.01.2016
    Datum: 07.02.2016

    Eigentlich sollte ja z.B 25.01.2016 oder 26.02.2016 ebenfalls aufscheinen, oder irre ich mich?

    Muss ich das Datum eventuell vorher von String in DateTime konvertieren bzw. kann dies direkt in der Select-Abfrage geschehen?

    Vielen lieben Dank im Voraus,

    Liebe Grüße,

    Flox83
    Es werden doch genau die Daten selectiert die du haben willst, grösser gleich 01/01/2016 und kleiner gleich 07/07/2016.

    Muss ich das Datum eventuell vorher von String in DateTime konvertieren bzw. kann dies direkt in der Select-Abfrage geschehen?

    Einfach mal testen würd ich sagen.

    Flox83 schrieb:

    Muss ich das Datum eventuell vorher von String in DateTime konvertieren
    Jo, das ist das Problem. so wie du es einliest, wirds als String eingelesen, und Strings sortieren natürlich anders als Datumse.
    Das nächste Problem ist, dass deine Strings in deutschr Kultur eingelesen werden - wenn du dieselbe Datei auf einem englischen Rechner einliest, kommen andere Werte bei raus.

    Verwende typisierte Datasets, die lesen und schreiben richtig. Daten laden und speichern