+-
C#通过变量名访问对象

用我的代码来解释会无限简单,所以。

    private void dtSelectorLoad_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show(dtSelector.SelectedValue != null ? dtSelector.SelectedValue.ToString() : "I have 0 selected items!");
        var query =
        from obj in dataEntities.someTable
        select obj;
        primaryDataGrid.ItemsSource = query.ToList();

    }

基本上,根据 dtSelector.SelectedValue.ToString(); 我需要执行 from obj in dataEntities.someTable 哪儿 someTable 的值。dtSelector.SelectedValue.ToString();.

我怎么才能做到这一点?我的头在这里撞墙了。最终的目的是,当用户点击按钮时,它会用listBox中当前选中的表的数据填充一个dataGrid。

2
投票

之所以看起来不可能(其实不然),是因为你所做的事情违背了每一个编程和数据库的原则。特别是,关系型数据库是根据字段条件进行查询的,而不是在多个模式相同的表之间进行分割,我跟你说实话,如果你这样做为我工作,你会在一天结束前被解雇。

然而,如果你坚持这样做,你有两个选择。

反思系统可以让你根据名字来访问属性。恭喜你,你为WinForms带来了SQL注入一般。

对所有可能的值进行简单的switch语句,它将请求转发到正确的表。当然这并不能完全扩展到新的值,因为你必须重新编译你的代码来添加新的值,但在这一点上,我们把任何一种专业性都抛到了窗外。