在VB.net中,我希望从RunTime类型的Linq查询行确定底层数据库表名。我试图创建一个删除ListBoxes中的行的通用例程,其对象值是查询行。我需要使用DeleteOnSubmit()的实际表名。当然,如果我对表名进行硬编码,它的工作正常,但这就是我要避免的,这样我就可以对许多列表框使用单个例程。我只是挂钩KeyUp事件。这是我目前的代码:
Private Sub LbxMenuItems_KeyUp(sender As Object, e As KeyEventArgs) Handles LbxMenuItems.KeyUp, LbxCategories.KeyUp
Dim lbx = DirectCast(sender, ListBox)
If e.KeyCode = Keys.Delete Then
Dim msg = "Delete " & lbx.SelectedItems.Count & " selected rows(s)?"
If MsgBox(msg, MsgBoxStyle.YesNo + MsgBoxStyle.Exclamation) <> vbYes Then Exit Sub
Dim lbxType As Type = lbx.SelectedItems(0).GetType
For Each sel In lbx.SelectedItems
dbh.MenuItems.DeleteOnSubmit(sel) <--- "MenuItems" IS THE TBL NAME I NEED Next
dbh.SubmitChanges()
End If
End Sub
例如: lbx.SelectedItems(0).GetType 生成全名“DataAdmin.MenuCategory”。 我正在寻找的表名是MenuCategories。 “dbh”是dataContext限定符。
我希望我能够很好地解释这一点,以便有人尝试提供帮助。谢谢!
答案 0 :(得分:0)
我是否理解您要查找的表名取决于用户点击删除的列表框?因此,列表框LbxMenuItems与表&#34; MenuItems&#34;相关联,而列表框LbxCategories与表&#34; MenuCategories&#34;?相关联如果是这种情况,由于Sub太小,为什么不只有2个不同的子,其中一个处理LbxMenuItems.KeyUp而另一个处理LbxCategories.KeyUp?然后你甚至可以根据需要自定义它们,比如说&#34; Dim msg =&#34;删除&#34; &安培; lbx.SelectedItems.Count&amp; &#34;例如,从菜单项?&#34;中选择的行。或者我错过了什么?