如何使用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,但完全有可能有一种方法可以在不使用反射的情况下获取数据 - 如果您能给我们更多信息,我们可以提供更多帮助。