Não sei se entendi direito, você está querendo filtrar ou paginar?
Adiantando. Você pode receber como DataSource um IQueryable, pode ser mais adequado para o que você está querendo fazer.
Para paginação você pode usar dois métodos do LINQ: Skip e Take.
Supomos que você queira paginar de 10 em 10: a página 1 seria colecao.Skip(0 * 10).Take(10), a página 2 seria Skip(1 * 10).Take(10), a página 3 seria Skip(2 * 10).Take(10), e assim por diante.
Você pode colocar no evento OnDataBinding (acho que esse deve ser o nome do evento) o seguinte código:
grid.DataSource = colecao.Skip(2 * 10).Take(10); // página 3
Eu não desenvolvo em Windows Forms, mas acredito que o DataGridView já tem paginação.
Espero ter ajudado,