首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反射+ LINQ

反射+ LINQ
EN

Stack Overflow用户
提问于 2011-05-12 03:24:31
回答 2查看 502关注 0票数 0

我正在调整使用反射和LINQ在一个sub上设置我所有ComboBox的数据源:

常用方法:

代码语言:javascript
复制
' ACAmp Panel
cboACPanelAmp.ValueMember = "IDACAmp"
cboACPanelAmp.DisplayMember = "Description"
cboACPanelAmp.DataSource = m_Entities.ACAmps.OrderBy(Function(c As ACAmp) c.SortOrder).ToList

想用那个潜艇吗?

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-12 23:21:09

代码语言:javascript
复制
  cbo.DataSource = GetType(RFOPSEntities).
                     GetProperty(entityName & "s").GetGetMethod().Invoke(m_Entities, Nothing)

在这一行中,您需要告诉环境这是一种可以使用linq的类型。

所以我认为它是一个RFOPSEntities,所以类似于

代码语言:javascript
复制
cbo.DataSource = DirectCast(GetType(RFOPSEntities)
                    .GetProperty(entityName & "s")
                    .GetGetMethod()
                    .Invoke(m_Entities, Nothing), RFOPSEntities)

然后你就可以在上面使用Linq OrderBy了。

代码语言:javascript
复制
cbo.DataSource = DirectCast(GetType(RFOPSEntities)
                    .GetProperty(entityName & "s")
                    .GetGetMethod()
                    .Invoke(m_Entities, Nothing), RFOPSEntities)
                    .OrderBy(Function(c As ACAmp) c.SortOrder).ToList
票数 0
EN

Stack Overflow用户

发布于 2011-05-12 23:50:24

谢谢你,msarchet,我做了一点修改,但它是有效的。

代码语言:javascript
复制
cbo.DataSource = DirectCast(GetType(RFOPSEntities) _
                           .GetProperty(entityName & "s") _
                           .GetGetMethod() _
                           .Invoke(m_Entities, Nothing), ObjectSet(Of ACAmp)))
                           .OrderBy(Function(c As ACAmp)) c.SortOrder).ToList()

现在我需要这样做:

代码语言:javascript
复制
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,但类型可以通过字符串传递。怎么做到的?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5969471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档