LINQ Mapping von 2 List<int>

  • C#

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von SpaceyX.

    LINQ Mapping von 2 List<int>

    Hey MIteinander,

    ich arbeite gerade an einem Buchhaltungsprogramm. Hier gibt es eine Klasse Account und eine Klasse Booking. Die Klasse Account hat eine List<int> Debits und eine List<int> Credits. In diesen Listen sind jeweils die IDs der Buchungen enthalten. Nun möchte ich die Balance des Accounts berechnen.

    C#-Quellcode

    1. public static double Balance(this Account account, IEnumerable<Booking> bookings)
    2. {
    3. List<Booking> debits = new();
    4. List<Booking> credits = new();
    5. foreach (var bookingID in account.Debit)
    6. debits.Add(bookings.FirstOrDefault(x => x.ID == bookingID));
    7. foreach (var bookingID in account.Credit)
    8. credits.Add(bookings.FirstOrDefault(x => x.ID == bookingID));
    9. return debits.Sum(x => x.Amount) - credits.Sum(x => x.Amount);
    10. }


    Dies möchte ich als Extension haben. Ich übergebe also das Account und die komplette LIste aller Bookings. Meine Frage ist nun, wie mappe ich alle BookingIDs zu den entsprechenden Bookings mit LINQ. Der eine ForEach-Loop soll quasi weg. Ich hab mich in der Vergangenheit immer nur mit den einfachen LINQ-Themen befasst und stehe hier gerade auf dem Schlauch.

    *Topic verschoben*
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Wenn du dir mit FirstOrDefault Nothing in die Listen holst, dann müsste die Sum Funktion auf die Schnauze fallen, weil Nothing ja keinen Member Amount hat.

    Das wird wohl ein Join sein sollen:

    C#-Quellcode

    1. double debit = account.Debit.Join(bookings, d => d, b => b.ID, (d,b) => b.Amount).Sum
    2. double credit = account.Credit.Join(bookings, c => c, b => b.ID, (c,b) => b.Amount).Sum
    3. Return debit - credit

    Ich versteh ja nix von Buchhaltung, aber warum sind die Bookings in erster Hand unabhängig vom Account?
    Irgendwie peil ich das Konstrukt nicht, die Debits/Credits bestehen nur aus bookingIDs? Ah verkehrt rum gelesen

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Haudruferzappeltnoch“ ()

    Ich danke Dir vielmals. Das ist, was ich gesucht hab. Das oben war nur ein Beispiel, um mein Problem zu beschreiben. Natürlich sind da Bugs drin. An "Join" hab ich nicht mehr gedacht.

    Läuft, Danke Dir @Haudruferzappeltnoch
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o