![](/img/trans.png)
[英]How can I create a LINQ statement where the table name (FROM) and column name (SELECT) is variable?
[英]How can I find the underlying db table name from a typed linq query row?
在VB.net中,我希望從運行時類型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限定符。
我希望我對這一點的解釋足夠好,以便有人嘗試提供幫助。 謝謝!
我是否正確理解您要查找的表名稱取決於用戶在其中單擊Delete的列表框? 那么,列表框LbxMenuItems與表“ MenuItems”相關聯,而列表框LbxCategories與表“ MenuCategories”相關聯嗎? 如果是這樣的話,由於Sub很小,為什么不只擁有2個不同的Sub,其中一個處理LbxMenuItems.KeyUp,另一個處理LbxCategories.KeyUp? 然后,您甚至可以根據需要進一步自定義它們,例如說“ Dim msg =“ Delete”&lbx.SelectedItems.Count&“從菜單項中選擇的行?”。還是我錯過了什么?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.