Blackhawk50000
Erfahrenes Mitglied
Hallo freunde. wenn ihr lust habt, habe ich hier eine kleine Aufgabe für euch...
Ich habe eine sehr gut funktionierende Methode zum Filtern von einem List<Object> object geschrieben.
Ein kollege sagte zu mir, es sei wirklich schlecht zu warten und könnte fast garnicht funktonieren....
Wenn ihr wollt, schreibt den Code doch mal um =)
Fragen bezüglich weiteren informationen die vielleicht fehlen, beantworte ich gerne...
Ich habe eine sehr gut funktionierende Methode zum Filtern von einem List<Object> object geschrieben.
Ein kollege sagte zu mir, es sei wirklich schlecht zu warten und könnte fast garnicht funktonieren....
Wenn ihr wollt, schreibt den Code doch mal um =)
Fragen bezüglich weiteren informationen die vielleicht fehlen, beantworte ich gerne...
Code:
/// <summary>
/// Mit der Schnellsuche auf Du und Du
/// Ein Bestseller von mir.
///
/// In dier Methode wird ein Lambda ausdruck zusammengebaut der alle Kombinationen von 5 Checkboxen berücksichtigt.
/// Diese 5 Checkboxen teilen sich in 2 Gruppe auf.
///
/// Gruppe 1: Zahlungsart
/// Gruppe 2: Offener Posten
///
/// Die Checkboxen für die schnellsuche und die Dazugehörigen eigenschaftswerte sind:
///
/// Lastschriftzahler ----> ZahlungsArt = 1
/// Rechnungszahler ----> ZahlungsArt = 2
///
/// Guthaben ----> Offener Posten kleiner 0
/// Keine offenen Posten ----> Offener Posten = 0
/// Forderung ----> Offener Posten > 0
///
/// Jede der Checkboxen hat eine eigene Abfrage, die einen Teil des Labdaausdruckes bildet.
/// Diese Abfragen sind mit der Kurzen IF schreibweise geschrieben um auf den Checked-Status der Checkbox entsprechend zu reagieren.
///
/// Beispiel normale if-abfrage
///
/// if(variable == true)
/// {
/// string = 1;
/// }
/// else
/// {
/// string = 2;
/// }
///
/// Die gleiche Abfrage in Kurzer schreibweise:
///
/// variable ? string = 1 : string = 2;
///
/// Diese Abfragen können beliebig verschachtelt werden. Im Fall der Schnellsuche, wird Jedes Teil der Gruppe mit jedem Teil der Gruppe verschachtelt.
///
///
/// </summary>
private void SetQuickSearch()
{
if (_zahler != null && _zahler.Count > 0)
{
_zahlerSuchErgebnis = _zahler.Where
(
x =>
(
(_rechnungsZahler ? x.ZahlungsArt == 1 : (_lastschriftZahler ? x.ZahlungsArt == 2 : false))
||
(_lastschriftZahler ? x.ZahlungsArt == 2 : (_rechnungsZahler ? x.ZahlungsArt == 1 : false))
)
&&
(
(_guthaben ? x.OffenerPosten < 0 : (_keineOffenenPosten ? x.OffenerPosten == 0 : (_forderung ? x.OffenerPosten > 0 : false)))
||
(_keineOffenenPosten ? x.OffenerPosten == 0 : (_guthaben ? x.OffenerPosten < 0 : (_forderung ? x.OffenerPosten > 0 : false)))
||
(_forderung ? x.OffenerPosten > 0 : (_guthaben ? x.OffenerPosten < 0 : (_keineOffenenPosten ? x.OffenerPosten == 0 : false)))
)
&&
(
(_mahnstatusGleichNull ? x.Mahnstatus == 0 : x.Mahnstatus == 1)
)
).ToList();
ABR_LadeZahlerCompleteEvent(_zahlerSuchErgebnis, "");
}
}