lambda expr. funktioniert nicht

  • VB.NET
  • .NET (FX) 4.0

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

    lambda expr. funktioniert nicht

    Hallo,

    weiss hier evtl. jemand, warum das hier nicht eintritt?

    VB.NET-Quellcode

    1. If Not _SelectedFields.Any(Function(SelectedField) _AggregatedFields.Contains(SelectedField)) And _
    2. Not _SelectedFields.Any(Function(SelectedField) GroupByFields.Contains(SelectedField)) Then
    3. End If


    Das hier ist das Gleiche, wie oben, nur eben ohne lambda und dies tritt ein, also die Daten sind richtig (habe sie auch geprüft):

    VB.NET-Quellcode

    1. For i = 0 To _SelectedFields.Count - 1
    2. If Not _AggregatedFields.Contains(_SelectedFields(i)) And Not GroupByFields.Contains(_SelectedFields(i)) Then
    3. End If
    4. Next


    Danke.

    ps.: Entschuldigung für die schlechte Formattierung, das Forum-Engine sollte doch normal arbeiten, oder?
    nein, es sind verschiedenerlei Dinge.
    Probierma

    VB.NET-Quellcode

    1. If _SelectedFields.Any(Function(fld) Not ( _
    2. _AggregatedFields.Contains(fld) OrElse GroupByFields.Contains(fld))) Then
    3. End If
    Deine 2-malige Verwendung von Any erzeugt 2 Durchläufe durch alle SelectedFields.
    Deiner funktionierende Schleife ist aber nur ein Durchlauf.
    Gesucht wird offenbar ein Field, was weder in AggregatedFields noch in GroupByFields vorhanden ist.

    Beachte auch den OrElse-Operator.
    Für logische Operationen sollte man And/Or niemals mehr benutzen, immer nur AndAlso/OrElse