Executando uma consulta LINQ simples em paralelo

Eu ainda sou muito novo no LINQ e no PLINQ. Eu geralmente uso apenas loops eList.BinarySearch em muitos casos, mas estou tentando sair dessa mentalidade onde posso.

public class Staff
{
  // ...
  public bool Matches(string searchString)
  {
    // ...
  }
}

Usando o "normal" LINQ - desculpe, eu não estou familiarizado com a terminologia - eu posso fazer o seguinte:

var matchedStaff = from s
                     in allStaff
                  where s.Matches(searchString)
                 select s;

Mas gostaria de fazer isso em paralelo:

var matchedStaff = allStaff.AsParallel().Select(s => s.Matches(searchString));

Quando eu verificar o tipo dematchedStaff, é uma lista debools, que não é o que eu quero.

Primeiro de tudo, o que estou fazendo errado aqui, e em segundo lugar, como faço para retornar umList<Staff> desta consulta?

public List<Staff> Search(string searchString)
{
  return allStaff.AsParallel().Select(/* something */).AsEnumerable();
}

devolveIEnumerable<type>, nãoList<type>.

questionAnswers(2)

yourAnswerToTheQuestion