Sagen wir, ich erstellen zwei Sätze von Tupeln wie so:Arbeiten mit Anonyme Typen mit Linq in VB, C#
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 wie so Satz Operationen auf diesen beiden Listen auszuführen:
Dim loTupleSetDifference = loTupleKeys.Except(loTupleExistingKeys)
Offensichtlich kann Linq nicht einen Komparator auf Sätze durchführen, wenn sie nicht wissen, die Sätze einheitliche Definitionen haben, so dass er mir diesen Build-Fehler geben wird:
Option Strict On disallows implicit conversions from 'System.Collections.Generic.IEnumerable(Of < anonymous type>)' to 'System.Collections.Generic.IEnumerable(Of < anonymous type>)'.
Wie arbeite ich mit der Deklaration dieser Sets, damit sie ineinandergreifen? (Nicht viel Glück auf Google)
[Bearbeiten] Noch immer die gleichen Compiler-Fehler:
'*** 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 ist hier:
Dim loTupleSetDifference = loTupleDatabaseTools.Except (loTupleToolObjects)
Error 5 Option Strict On disallows implicit conversions from 'System.Collections.Generic.IEnumerable(Of < anonymous type>)' to 'System.Collections.Generic.IEnumerable(Of < anonymous type>)'.
Ah. Ich habe die Namen der Spalten oben geändert. Das muss das Problem sein - die Namen unterscheiden sich? Wie kann ich das beheben? – Daniel
Verwenden Sie die gleichen Namen :) –
Ich wünschte, ich könnte, aber leider unsere DBAs gewählt Spalten Spaltennamen nicht zu den gleichen Namenskonventionen wie wir für Code zu entsprechen. Ein Datensatz besteht aus einer Ergebnismenge einer gespeicherten Prozedur, der andere besteht aus einer Liste von Objekten. Gibt es eine einfache Möglichkeit, die Namen zu ändern oder zu ignorieren oder muss ich diese in einheitlich benannte Datensätze kopieren? – Daniel