如何将Take()
与以下代码一起使用?
var context = new Entities();
BindingSource bi = new BindingSource();
var TableName = cboSelectTable.Text.ToString();
bi.DataSource = context.GetType().GetProperty(TableName).GetValue(context, null);
感谢。
答案 0 :(得分:1)
您需要将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()
之后致电Take(100)
,以实现查询结果。
(假设它 是IQueryable<T>
...如果它只是IEnumerable<T>
,那么就转向它。)
不清楚Entities
是什么,但完全有可能在不使用反射的情况下获取数据 - 如果您能提供更多信息,我们可以提供更多帮助。