Union does not return a Dictionary, it returns an IEnumerable.
If you need a Dictionary, you need to use ToDictionary to convert it:
Dim D1 As New Dictionary(Of String, String)()
Dim D2 As New Dictionary(Of String, String)()
...
Dim D3 As Dictionary(Of String, String) = D1.Union(D2).ToDictionary(Function(p) p.Key, Function(p) p.Value)