Скажем, я создать два набора кортежей, как так:Работа с анонимными типами с Linq в 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
Теперь я хочу, чтобы выполнить набор операций на этих двух списков, как так:
Dim loTupleSetDifference = loTupleKeys.Except(loTupleExistingKeys)
Очевидно, Linq не может выполнить компаратор на множествах, если он не знает, что множества имеют единые определения, так что это даст мне эту ошибку сборки:
Option Strict On disallows implicit conversions from 'System.Collections.Generic.IEnumerable(Of < anonymous type>)' to 'System.Collections.Generic.IEnumerable(Of < anonymous type>)'.
Как я могу работать с объявлением этих наборов, чтобы сделать их сеткой? (Не так много удачи на Google)
[Редактировать] все еще получаю ту же ошибку компиляции:
'*** 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)
Ошибка здесь:
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>)'.
Ах. Я внес изменения в имена столбцов выше. Это должна быть проблема - имена различаются? Как я могу это исправить? – Daniel
Использовать те же самые имена :) –
Я бы хотел, но, к сожалению, наши администраторы баз данных решили не согласовывать имена столбцов с теми же соглашениями об именах, которые мы используем для кода. Один набор данных состоит из набора результатов хранимой процедуры, другой - список объектов. Есть ли простой способ изменить или игнорировать имена или мне придется их скопировать в равномерно названные наборы данных? – Daniel