C# 将Take()与bindingsource一起使用

C# 将Take()与bindingsource一起使用,c#,linq,take,C#,Linq,Take,如何将Take()与以下代码一起使用 var context = new Entities(); BindingSource bi = new BindingSource(); var TableName = cboSelectTable.Text.ToString(); bi.DataSource = context.GetType().GetProperty(TableName).GetValue(context, null); 谢谢。您需要将GetValue()的结果转换为适当的

如何将
Take()
与以下代码一起使用

var context = new Entities();
BindingSource bi = new BindingSource();
var TableName = cboSelectTable.Text.ToString();    
bi.DataSource = context.GetType().GetProperty(TableName).GetValue(context, null);

谢谢。

您需要将
GetValue()
的结果转换为适当的结果。它总是会是某种类类型的序列吗?如果是这样,从C#4和.NET 4开始,您可以使用通用协方差:

var context = new Entities();
var tableName = cboSelectTable.Text.ToString();    
var rawData = context.GetType().GetProperty(TableName).GetValue(context, null);
var truncatedData = ((IQueryable<object>) rawData).Take(100);
var source = new BindingSource { DataSource = truncatedData };
var context=新实体();
var tableName=cboSelectTable.Text.ToString();
var rawData=context.GetType().GetProperty(TableName).GetValue(context,null);
var truncatedData=((IQueryable)rawData).Take(100);
var source=newbindingsource{DataSource=truncatedData};
您可能还希望在
Take(100)
之后调用
ToList()
,以具体化查询结果

(这是假设它将是一个
IQueryable
…如果它只是一个
IEnumerable
,则转换为该值。)


现在还不清楚什么是
实体
,但完全有可能有一种方法可以在不使用反射的情况下获取数据-如果您能给我们提供更多信息,我们可以提供更多帮助。

我使用的是实体框架,实际上,完整的代码如下:var context=new AdminEntities();BindingSource bi=新的BindingSource();var TableName=cboSelectTable.Text.ToString();bi.DataSource=context.GetType().GetProperty(TableName).GetValue(context,null);dgvLoadTable.DataSource=bi;dgvLoadTable.Refresh()@feather:不,不要在注释中发布大量代码。但如果您能告诉我们什么是
Entities()
继承的,那将很有帮助……这是一个使用数据库构建的实体模型tables@feather:那没有回答我的问题。(我自己不是实体框架开发人员,但如果你能告诉我
实体的基类
,这将真正帮助我找到更多信息…)我有两个数据库,我使用这些数据库的表构建了实体模型。该行实际上是var context=new AdminEntities()。此处AdminEntities是一个实体模型。