2011-05-11 24 views
0

我修整到上設置我的所有組合框的數據源子使用反射與LINQ:反射+ LINQ

常用的方法:

' ACAmp Panel 
cboACPanelAmp.ValueMember = "IDACAmp" 
cboACPanelAmp.DisplayMember = "Description" 
cboACPanelAmp.DataSource = m_Entities.ACAmps.OrderBy(Function(c As ACAmp) c.SortOrder).ToList 

要使用子

FillCbo(cboACPanelAmp, "ACAmp") 

Private Sub FillCbo(ByVal cbo As Infragistics.Win.UltraWinEditors.UltraComboEditor, ByVal entityName As String) 

    cbo.ValueMember = "ID" & entityName 
    cbo.DisplayMember = "Description" 

    ' need to complete this line 
    cbo.DataSource = GetType(RFOPSEntities). 
        GetProperty(entityName & "s").GetGetMethod().Invoke(m_Entities, Nothing) 
    ' with this code 
    ' .OrderBy(Function(c As ACAmp) c.SortOrder).ToList 

    ' like this line 
    cbo.DataSource = m_Entities.ACAmps.OrderBy(Function(c As ACAmp) c.SortOrder).ToList 

End Sub 

我找不出最後一行的最後一部分,LINQ

回答

0
cbo.DataSource = GetType(RFOPSEntities). 
        GetProperty(entityName & "s").GetGetMethod().Invoke(m_Entities, Nothing) 

在該行中,您需要告訴環境這是一種可以使用linq的類型。

所以我認爲這是一個RFOPSEntities,所以像

cbo.DataSource = DirectCast(GetType(RFOPSEntities) 
        .GetProperty(entityName & "s") 
        .GetGetMethod() 
        .Invoke(m_Entities, Nothing), RFOPSEntities) 

那麼你應該能夠使用LINQ的排序依據上

cbo.DataSource = DirectCast(GetType(RFOPSEntities) 
        .GetProperty(entityName & "s") 
        .GetGetMethod() 
        .Invoke(m_Entities, Nothing), RFOPSEntities) 
        .OrderBy(Function(c As ACAmp) c.SortOrder).ToList 
+0

cbo.DataSource = DirectCast(的GetType(RFOPSEntities)_ .GetProperty(&的entityName 「S」)_ .GetGetMethod()_ .Invoke(m_Entities,爲Nothing),對象集(OF ACAmp))。的OrderBy(功能(c As ACAmp)c.SortOrder).ToList() – Francis 2011-05-12 15:45:41

0

謝謝msarchet我modifiy了一點,但這行得通。

cbo.DataSource = DirectCast(GetType(RFOPSEntities) _ 
          .GetProperty(entityName & "s") _ 
          .GetGetMethod() _ 
          .Invoke(m_Entities, Nothing), ObjectSet(Of ACAmp))) 
          .OrderBy(Function(c As ACAmp)) c.SortOrder).ToList() 

現在我需要做的semeting這樣的:

cbo.DataSource = DirectCast(GetType(RFOPSEntities) _ 
           .GetProperty(entityName & "s") _ 
           .GetGetMethod() _ 
           .Invoke(m_Entities, Nothing), ObjectSet(Of Type.GetType("ACAmp"))).OrderBy(Function(c As Type.GetType("ACAmp")) c.SortOrder).ToList() 

的Type.GetType( 「ACAmp」)不是goog但類型可以通過字符串傳遞。怎麼樣 ?