C# 获取表名LINQtoSQL

C# 获取表名LINQtoSQL,c#,.net,linq-to-sql,datacontext,C#,.net,Linq To Sql,Datacontext,我有一个包含数据库中所有表列表的组合框: 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 = "

我有一个包含数据库中所有表列表的组合框:

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

解决方案是:

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

如果你最终需要字符串类型,那你为什么还要打字呢?只需
cmbbx\u表格。选择的值将执行此操作,否?IOW-
String table=cmbbx_tables.SelectedValue否。组合框ValueMember是
行类型
不确定您的确切意思。从您的代码
String table=…
和您的问题“我想获取所选表的名称”来看,似乎
cmbbx_tables.SelectedValue.ToString()
将完成这项工作。我找到了解决方案:
(cmbbx_tables.SelectedValue as System.Data.Linq.Mapping.MetaType).Type
仍然不确定为什么要在上下文中调用GetTable,键入casting,然后调用TableName,而此时TableName正以字符串形式通过
cmbbx_tables出现在您的膝上。SelectedValue
cmbbx_tables。SelectedItem.Text