2016-02-11 1 views
0

Я пытаюсь получить доступ к словарю, созданному в методе todictionary, в других процедурах.общедоступный словарь в методе todictionary

Это то, что я хотел бы, но у меня возникает ошибка компиляции.

Public dctOPT As New Dictionary(Of Integer, Object) 

Sub Get_RTD_OPT() 

     Dim lstOPT = From C In DATA.CHAINs, O In DATA.OPTIONs, U In DATA.UDLies 
        Where C.CONTRACT = O.CONTRACT And O.UDLY_SYM = U.UDLY_SYM 
        Select C.ID, C.P_C, C.STRIKE, C.CONTRACT, 
         O.OPT_EXCHANGE, O.OPT_EXPIRY, O.OPT_SEC_TYPE, O.SYM, 
         U.CURRENCY 

     dctOPT = lstOPT.ToDictionary(Function(Z) Z.ID) 

end sub 

компилируется, но я не могу получить доступ к dctOPT в других процедурах.

dim dctOPT = lstOPT.ToDictionary(Function(Z) Z.ID) 

мне нужно скопировать dctOPT в другой государственный словарю или есть более простой способ делать? Любые предложения, пожалуйста?

+0

Похоже, что тип 'Z.ID' не является' Integer'. – Enigmativity

+0

Определяется как '' int'' в datatable, и если я изменю публичное объявление на '' (от string, object) '', я все равно получаю ошибку компиляции. Это как-то связано с анонимными типами? – Zeus

+0

Попробуйте выполнить 'Dim dctOPT = lstOPT.ToDictionary (Function (Z) Z.ID)', а затем 'dctOPT.GetType()' и посмотреть, какой тип он есть. В противном случае просто не имеет смысла, что он работает с 'Dim', но не без. Это может быть целое число без знака? – Enigmativity

ответ

1

Вам нужно это:

Public dctOPT As New Dictionary(Of Integer, Object) 

Sub Get_RTD_OPT() 

    Dim lstOPT = 
     From C In DATA.CHAINs, O In DATA.OPTIONs, U In DATA.UDLies 
     Where C.CONTRACT = O.CONTRACT And O.UDLY_SYM = U.UDLY_SYM 
     Select C.ID, C.P_C, C.STRIKE, C.CONTRACT, 
      O.OPT_EXCHANGE, O.OPT_EXPIRY, O.OPT_SEC_TYPE, O.SYM, 
      U.CURRENCY 

    dctOPT = lstOPT.ToDictionary(Function(Z) Z.ID, Function(Z) CType(Z, Object)) 

End Sub 

Без Function(Z) CType(Z, Object) тип словаря создается было Dictionary(Of Integer, <anonymous>) и которые не могут быть непосредственно отнесены к Dictionary(Of Integer, Object). Приведение правильно генерирует словарь нужного типа.

+0

tks, я посмотрю, как для исправления другой проблемы с литьем, но это заставляет меня снова кататься – Zeus