如何使用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 };
您可能还想调用ToList()
afterTake(100)
来具体化查询结果。
(这是假设它将是一个IQueryable<T>
... 如果它只是一个IEnumerable<T>
, 则改为那个。)
目前尚不清楚是什么Entities
,但完全有可能有一种方法可以在不使用反射的情况下获取数据 - 如果您能给我们更多信息,我们可以提供更多帮助。