Równoległe uruchamianie prostego zapytania LINQ

Nadal jestem bardzo nowy w LINQ i PLINQ. Zwykle używam pętli iList.BinarySearch w wielu przypadkach, ale staram się wyjść z tego sposobu myślenia, gdzie mogę.

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

Używając „normalnego” LINQ - przepraszam, nie znam terminologii - mogę wykonać następujące czynności:

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

Ale chciałbym to zrobić równolegle:

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

Kiedy sprawdzę typmatchedStaff, to listabools, co nie jest tym, czego chcę.

Po pierwsze, co tu robię źle, a po drugie, jak mam zwrócićList<Staff> z tego zapytania?

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

zwracaIEnumerable<type>, nieList<type>.

questionAnswers(2)

yourAnswerToTheQuestion