Frage

Sagen wir, ich erstellen zwei Sätze von Tupeln in etwa so:

    Dim losSPResults As List(Of spGetDataResults) = m_dcDataClasses.spGetData.ToList
    Dim loTupleKeys = From t In losSPResults Select t.key1, t.key2

    '' Query on an existing dataset:
    Dim loTupleExistingKeys = from t in m_losSPResults Select t.key3, t.key4

Jetzt möchte ich Set-Operationen auf diesen beiden Listen auszuführen etwa so:

    Dim loTupleSetDifference = loTupleKeys.Except(loTupleExistingKeys)

Natürlich kann Linq nicht einen Komparator auf Sätze durchführen, wenn es nicht die Sätze haben einheitliche Definitionen nicht kennt, so wird es geben Sie mir diesen Build-Fehler:

  

Option Strict On nicht zulässt implizite   Umtausch-   ‚System.Collections.Generic.IEnumerable (Of   )‘zu   ‚System.Collections.Generic.IEnumerable (Of   )‘.

Wie kann ich mit der Erklärung dieser Sets arbeiten, um sie Netz zu machen? (Nicht viel Glück auf Google)

[Bearbeiten] Immer noch den gleichen Compiler-Fehler bekommen:

    '*** If we have initialized the list of tools, check to make sure it's up to date
    Dim loTupleDatabaseTools = From tt In lottTorqueTools _
                               Select StationIndex = tt.station_index, SlotNumber = tt.slot_number
    Dim loTupleToolObjects = From tt In m_lottTorqueTools _
                             Select StationIndex = tt.StationIndex, SlotNumber = tt.SlotNumber

    Dim loTupleSetDifference = loTupleDatabaseTools.Except(loTupleToolObjects)

Fehler sind hier:

Dim loTupleSetDifference = loTupleDatabaseTools.Except ( loTupleToolObjects )

  

Fehler 5 Option auf Verbietet Strict   implizite Konvertierungen von   ‚System.Collections.Generic.IEnumerable (Of   )‘zu   ‚System.Collections.Generic.IEnumerable (Of   )‘.

War es hilfreich?

Lösung

Wenn die anonymen Typen die gleichen Eigenschaftsnamen mit den gleichen Typen in der gleichen Reihenfolge haben, sollten sie die gleichen Typen sein (und somit kompatibel).

EDIT: Basierend auf den Kommentaren und die aktualisierte Frage, ich vermute, dass das Bit Ihnen fehlt die Fähigkeit ist, die Eigenschaften in anonyme Typen zu nennen. Ändern Sie dies:

Dim loTupleExistingKeys = from t in m_losSPResults Select t.key3, t.key4

in diesen:

Dim loTupleExistingKeys = from t in m_losSPResults Select key1=t.key3, key2=t.key4

Solange die Typen sind richtig, können Sie dann ohne mehr Arbeit in Ordnung sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top