2014-08-29 60 views
0

我有組合框在我的數據庫中的所有表的列表:獲取表名LINQtoSQL

using(DataContext db = new DataContext()) 
{ 
    cmbbx_tables.DataSource = db.Mapping.GetTables().Select(q=>new {q.TableName, q.RowType}).ToArray(); 
    cmbbx_tables.DisplayMember = "TableName"; 
    cmbbx_tables.ValueMember = "RowType";   
} 

SelectionChangeCommitted事件我想選擇的表的名稱:

private void cmbbx_tables_SelectionChangeCommitted(object sender, EventArgs e) 
{ 
    using(DataContext db = new DataContext()) 
    { 
     String table = db.Mapping.GetTable((???)cmbbx_tables.SelectedValue).TableName;     
    } 
} 

如何我應該輸入cast cmbbx_tables.SelectedValue?

+0

如果你最終需要字符串類型,那麼爲什麼你甚至類型轉換?只需'cmbbx_tables.SelectedValue'就可以完成這項工作,不是嗎? IOW - 'String table = cmbbx_tables.SelectedValue;' – joym8 2014-08-29 19:15:56

+0

不可以。組合框ValueMember是'RowType' – koryakinp 2014-08-29 19:23:29

+0

不確定您的意思。從你的代碼中'String table = ...'和你的問題「我想得到所選表的名字」似乎'cmbbx_tables.SelectedValue.ToString()'將完成這項工作。 – joym8 2014-08-29 19:35:16

回答

0

的解決方案是:

String name = db.Mapping.GetTable((cmbbx_tables.SelectedValue as System.Data.Linq.Mapping.MetaType).Type).TableName; 
+0

仍然不確定爲什麼你要經歷在你的上下文中調用GetTable的麻煩,類型轉換它,然後調用TableName ,當它通過'cmbbx_tables.SelectedValue'或者'cmbbx_tables.SelectedItem.Text'在你的腿上以字符串形式出現時, – joym8 2014-08-29 19:56:23