Hallo,
ich habe eine Klasse mit Fahrzeugen:
Model
und eine Liste mit entsprechenden Objekten, die auch entsprechend gefüllt ist
Zur Zeit gehe ich so vor:
1. Die Liste wird sortiert und zwar nach der Fahrgestellnummer (FIN), dann abseteigend nach dem Datum des letzten Besuchs
2. In einer Schleife wird die Liste durchlaufen, das erste Auftreten einer FIN bedeutet "dieser Datensatz ist aktuell", alle weiteren Datensätze der selben FIN sind veraltete Daten, also Dubletten
Nachtrag, die Schleife ist bisher auch nicht Parallel ausgeführt worden. ich bin mir auch nicht so sicher, ob in diesem Fall das Ergebnis bei Paralell-Verarbeitung nicht sogar verfälscht werden könnte.
Vielleicht kann ja auch dazu jemand Berufener etwas sagen?
hier der Code dazu
Ich habe leider nicht das Know-How komplexe LINQ-Abfragen zu schreiben, aber gäbe es bessere Möglichkeiten mit Linq?
Falls mir da jemand die Linq-Query basteln könnte, ich bekomme es leider nicht hin. Jedenfalls keine Abfrage die das tut was ich möchte.
ich habe eine Klasse mit Fahrzeugen:
C#-Quellcode
- public class VehicleData
- {
- public int ID { get; set; }
- public bool DuplicateIndicator { get; set; }
- public string FIN { get; set; }
- public string Customer { get; set; }
- public DateTime FirstRegistration { get; set; }
- public DateTime LastVisit { get; set; }
- public DateTime SafetyInspection { get; set; }
- public int LastMileage { get; set; }
- public string RegistrationNumber { get; set; }
- }
und eine Liste mit entsprechenden Objekten, die auch entsprechend gefüllt ist
Zur Zeit gehe ich so vor:
1. Die Liste wird sortiert und zwar nach der Fahrgestellnummer (FIN), dann abseteigend nach dem Datum des letzten Besuchs
2. In einer Schleife wird die Liste durchlaufen, das erste Auftreten einer FIN bedeutet "dieser Datensatz ist aktuell", alle weiteren Datensätze der selben FIN sind veraltete Daten, also Dubletten
Nachtrag, die Schleife ist bisher auch nicht Parallel ausgeführt worden. ich bin mir auch nicht so sicher, ob in diesem Fall das Ergebnis bei Paralell-Verarbeitung nicht sogar verfälscht werden könnte.
Vielleicht kann ja auch dazu jemand Berufener etwas sagen?
C#-Quellcode
- VehicleData.Vehicles = VehicleData.Vehicles
- .OrderBy(x => x.FIN)
- .ThenByDescending(x => x.LastVisit)
- .ToList();
- //Vergleich mit letzter verarbeiteter FIN um die folgende FIN als Dublette erkennen zu können
- string Compare = "ZZZZZZZZZZZZZZZZZZZZ"; //am besten eine FIN, die es nicht gibt, Blank ist keine gute Idee, da sowas leider vorkommt....
- Parallel.ForEach(VehicleDataList.Vehicles.AsEnumerable(), new ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount }, Item =>
- {
- if (Item.FIN == Compare)
- Item.DuplicateIndicator = true; //Dublette gefunden und markiert
- else
- Compare = Item.FIN; //letzte FIN für nächsten Vergleich übernehmen
- }
Ich habe leider nicht das Know-How komplexe LINQ-Abfragen zu schreiben, aber gäbe es bessere Möglichkeiten mit Linq?
Falls mir da jemand die Linq-Query basteln könnte, ich bekomme es leider nicht hin. Jedenfalls keine Abfrage die das tut was ich möchte.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dksksm“ ()