Я пытаюсь запустить функцию Count () оператора Linq в переопределенной функции Gridview. По сути, я хочу иметь возможность назначить запрос linq для вида сетки, и на событии OnDataBound (e) в моем новом расширенном виде сетки он получает счетчик, используя IQueryable.
Итак, мне нужно динамически преобразовать GridView.DataSource в мой объект LinqToSql IQueryable, чтобы я мог выполнить для него функцию Count ().
Вот где я сейчас нахожусь:
protected override void OnDataBound(EventArgs e)
{
IEnumerable _data = null;
if (this.DataSource is IQueryable)
{
_data = (IQueryable)this.DataSource;
}
System.Type dataSourceType = _data.GetType();
System.Type dataItemType = typeof(object);
if (dataSourceType.HasElementType)
{
dataItemType = dataSourceType.GetElementType();
}
else if (dataSourceType.IsGenericType)
{
dataItemType = dataSourceType.GetGenericArguments()[0];
}
else if (_data is IEnumerable)
{
IEnumerator dataEnumerator = _data.GetEnumerator();
if (dataEnumerator.MoveNext() && dataEnumerator.Current != null)
{
dataItemType = dataEnumerator.Current.GetType();
}
}
Object o = Activator.CreateInstance(dataItemType);
object[] objArray = new object[] { o };
RowCount = (int)dataSourceType.GetMethod("Count").Invoke(_data, objArray);
Есть идеи? Я действительно новичок в работе с IQueryables и Linq, так что я могу быть далеко. Как я могу получить свои _данные, чтобы я мог запустить функцию Count?