Pergunta

Say I criar dois conjuntos de tuplas assim:

    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

Agora eu quero realizar operações de conjunto sobre estas duas listas assim:

    Dim loTupleSetDifference = loTupleKeys.Except(loTupleExistingKeys)

Obviamente, Linq não pode executar um comparador em conjuntos se não conhecer os conjuntos têm definições uniformes, por isso vai me dar a este erro de compilação:

Option Strict On não permite implícita conversões de 'System.Collections.Generic.IEnumerable (Of )' para 'System.Collections.Generic.IEnumerable (Of )'.

Como eu trabalho com a declaração desses conjuntos para torná-los malha? (Não é muita sorte no google)

[Edit] Ainda recebendo o mesmo erro de compilação:

    '*** 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)

O erro é aqui:

= Dim loTupleSetDifference loTupleDatabaseTools.Except ( loTupleToolObjects )

Erro 5 Option Strict On não permite conversões implícitas de 'System.Collections.Generic.IEnumerable (Of )' para 'System.Collections.Generic.IEnumerable (Of )'.

Foi útil?

Solução

Se os tipos anônimos têm os mesmos nomes de propriedades com os mesmos tipos na mesma ordem, eles devem ser os mesmos tipos (e, portanto, compatível).

EDIT: Com base nos comentários e a questão atualizado, eu suspeito que o pouco que está faltando é a capacidade de nomear as propriedades em tipos anônimos. Alterar esta:

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

a este:

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

Enquanto os tipos estão certos, você pode, então, ser aprovado sem mais trabalho.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top