如何在c#中使用局部反射?

如何在c#中使用局部反射?,c#,winforms,entity-framework,reflection,C#,Winforms,Entity Framework,Reflection,也许这是一件很简单的事情,但我找不到答案。我可以使用反射编写下面的代码吗 AdminEntities context= new AdminEntities(); datagridview1.DataSource = context.TABLENAME.Local.ToBindingList(); 我尝试了以下方法: BindingSource rtBindingSource = new BindingSource(); var TableName = cboSelectTable.Text.

也许这是一件很简单的事情,但我找不到答案。我可以使用反射编写下面的代码吗

AdminEntities context= new AdminEntities(); 
datagridview1.DataSource = context.TABLENAME.Local.ToBindingList();
我尝试了以下方法:

BindingSource rtBindingSource = new BindingSource();
var TableName = cboSelectTable.Text.ToString();
AdminEntities context = new AdminEntities();
var rawData = context.GetType().GetProperty(TableName).GetValue(context, null);
var truncatedData = ((IQueryable<object>)rawData).Local.ToBindingList();
var binding = new BindingList<object>(truncatedData);
rtBindingSource.DataSource = new BindingSource { DataSource = binding };
datagridview1.DataSource = rtBindingSource;
BindingSource rtBindingSource=newbindingsource();
var TableName=cboSelectTable.Text.ToString();
AdminEntities上下文=新的AdminEntities();
var rawData=context.GetType().GetProperty(TableName).GetValue(context,null);
var truncatedData=((IQueryable)rawData).Local.ToBindingList();
var binding=新绑定列表(truncatedData);
rtBindingSource.DataSource=newbindingsource{DataSource=binding};
datagridview1.DataSource=rtBindingSource;

但它给出了一个错误:'System.Linq.IQueryable'不包含'Local'的定义,并且找不到接受'System.Linq.IQueryable'类型的第一个参数的扩展方法'Local'。

我对
实体框架
做得不多,但明显的问题似乎是您试图在这里强制转换到错误的对象:

var truncatedData = ((IQueryable<object>)rawData).Local.ToBindingList();

您当然可以通过使用反射来实现这一点,但重要的问题是,您为什么需要这样做?你的实际目标是什么?我有多张桌子,因此,我想使用组合框选择的表名,而不是为每个表编写代码
Paradox
也许您应该重新开始,并根据组合框中的表名解释您试图执行的操作。从那里开始,我认为其他人可能能够根据特定的tableIQueryable实际上没有本地属性,所以您可以解释一下从何处获得它。()是的,我知道IQueryable没有本地属性,这就是它给出错误的原因。我想知道如何将local与反射一起使用。这会导致错误:“System.Collections.IList”不包含“ToBindingList”的定义,并且找不到接受“System.Collections.IList”类型的第一个参数的扩展方法“ToBindingList”
var truncatedData = ((DbSet)rawData).Local.ToBindingList();