фильтрация словаря (из int64, myObject) из словаря (из int64, int64) - PullRequest
1 голос
/ 12 мая 2011

у меня 2 словаря;

  • A: словарь (из int64, myObject)
  • B: словарь (из int64, int64).

Я хочу отфильтровать (или получить еще один отфильтрованный словарь) словарь A из словаря B. Я имею в виду, что в словаре B есть некоторые ключи / значения ключей словаря A, и я хочу словарь A только с этими ключами.

На всякий случай, B не должен быть словарем (int64, int64), это может быть список, массив или что-то еще, если это поможет.

Большое спасибо!

PS: я знаю, что могу сделать это с помощью for for, но я думаю (надеюсь?), Был бы более эффективный способ сделать это.

1 Ответ

1 голос
/ 12 мая 2011

Это помогает?Customer имеет одно свойство ID типа int64.

    Dim foo As New Dictionary(Of Int64, Int64)
    Dim bar As New Dictionary(Of Int64, Customer)

    foo.Add(1, 5)
    foo.Add(2, 99)
    foo.Add(3, 222)
    foo.Add(4, 333)

    bar.Add(1, New Customer(5, "john"))
    bar.Add(55, New Customer(323, "ringo"))
    bar.Add(4, New Customer(333, "george"))

    Dim common = From f In foo, b In bar _
                    Where f.Key = b.Key _
                    And f.Value = b.Value.ID _
                    Select b

    For Each item As KeyValuePair(Of Int64, Customer) In common
        Console.WriteLine(item.Key & " " & item.Value.ID & " " & item.Value.Name)
    Next

 ....

Public Class Customer
   Public ID As Int64
   Public Name As String
End Class
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...