Je suis un Linq noobie, peut-être que quelqu'un peut me diriger dans la bonne direction. Quel est le problème ici? Ces types anonymes semblent avoir les mêmes signatures.Linq, VB - Type anonyme ne peut pas être converti en type anonyme
'*** Get all of the new list items'
Dim dsNewFiles = From l1 In list1 _
Where Not (From l2 In list2 _
Select l2.id, l2.timestamp).Contains(New With {l1.id, l1.timestamp})
Je souhaite qu'il y avait un moyen de mettre en évidence dans le code ci-dessus, mais je reçois l'erreur de compilation:
Value of type '<anonymous type> (line n)' cannot be converted to '<anonymous type> (line n)'.
sur la » .Contains (Nouveau Avec {l1.id, l1. horodatage}) "
Je suppose qu'il pense que les types anonymes sont différents d'une certaine façon, mais les colonnes id et timestamp sont les mêmes dans les deux listes. Ils sont également dans le même ordre. Quoi d'autre peut être différent entre les deux?
[Modifier 7/10/2009 16:28 EST]
I Tried le code suggéré de l'utilisateur Meta-Knight (Nouveau avec la {l1.id Key, l1.timestamp}) et il a fixé la erreur de compilation. Cependant, quand je courais le code avec List1 et List2 comme suit:
List1 List2
id timestamp id timestamp
-- ---------- -- ----------
01 2009-07-10 00:00:00 01 2009-07-10 00:00:00
Le résultat a été:
dsNewFiles
id timestamp
-- ----------
01 2009-07-10 00:00:00
Il aurait dû être une liste vide.
@ Meta-Knight: Merci pour la perspicacité. L'erreur de compilation est partie. Cependant, le code ne fonctionne toujours pas comme prévu. S'il vous plaît voir la modification ci-dessus. – Daniel
J'ai édité avec plus de détails et une autre alternative. –