Я Linq noobie, может быть, кто-то может указать мне в правильном направлении. Что здесь не так? У этих анонимных типов есть одинаковые подписи.Linq, VB - Анонимный тип не может быть преобразован в анонимный тип
'*** 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})
Я хотел было каким-то образом выделить в коде выше, но я получаю ошибку компиляции:
Value of type '<anonymous type> (line n)' cannot be converted to '<anonymous type> (line n)'.
на».Contains (Новый С {l1.id, l1. timestamp}) «
Я предполагаю, что он считает, что анонимные типы в некотором роде разные, но столбцы id и timestamp одинаковы в любом списке. Они также находятся в одном порядке. Что еще может быть разным между этими двумя?
[Редактировать 7/10/2009 16:28 EST]
Я попробовал предложенный код от пользователя Meta-Knight (Новые С {Key l1.id, l1.timestamp}), и констатировала ошибка компиляции. Однако, когда я побежал код с List1 и List2 следующим образом:
List1 List2
id timestamp id timestamp
-- ---------- -- ----------
01 2009-07-10 00:00:00 01 2009-07-10 00:00:00
Результат был:
dsNewFiles
id timestamp
-- ----------
01 2009-07-10 00:00:00
Он должен был пустой список.
@ Мета-рыцарь: Спасибо за понимание. Ошибка компиляции исчезла. Однако код по-прежнему не работает, как ожидалось. См. Изменение выше. – Daniel
Я отредактировал более подробную информацию и другую альтернативу. –