Beh l'esempio su msdn mi sembra abbastanza chiaro a dirti la verità. Praticamente ti devi scrivere una funzione di callback che prende in input una variabile del tipo della lista e nel caso quest'ultima corrisponde alle condizione di ricerca ritorna true altrimenti false.
Ti ho scritto un esempietto per mostrarti come funziona, inolte mi sono permesso di farti un paragone tra altri modi di cercare all'interno di una lista. L'uso di lamba expression è secondo me quello più elegante in questo caso.

codice:
using System;
using System.Collections.Generic;
using System.Linq;

namespace ProvaFindAll
{
	class MainClass
	{
		public static void Main (string[] args)
		{
			List<int> listaInteri = new List<int>();
			int i;
			
			for(i = 0; i < 100; i++)
			{
				listaInteri.Add(i);
			}
			
			//Utilizzo di lamba expression
			var listaMag10 = listaInteri.FindAll( num => num>10 );
			StampaLista(listaMag10);
			
			//Utilizzo di delegati
			var listaPari = listaInteri.FindAll( NumPari);
			StampaLista(listaPari);
			
			//LINQ
			var listaDispari = (from num in listaInteri
							where num % 2 != 0
							select num).ToList<int>();
			StampaLista(listaDispari);

		}
		
		static void StampaLista(List<int> lista)
		{
			foreach(int n in lista)
			{
				Console.WriteLine(n);
			}
		}
		
		static bool NumPari(int n)
		{
			if(n % 2 ==0)
				return true;
			return false;
		}
	}
}