Почти наверняка найдутся лучшие способы справиться с этим, но чтобы ответить на ваш вопрос, как вы спросили, вы можете использовать dynamic
:
private static IQueryable<T> GetInteriorElements<T>
(IQueryable<T> source, int skip, int take)
{
return source.Skip(skip).Take(take);
}
И назовите это как:
object DataSource = ...
// The real question is: what are you now going to do with this?
var pagedData = GetInteriorElements((dynamic)DataSource, 10, 20);
Если вы используете .NET 3.5, вам, к сожалению, придется использовать отражение.