Выполнение простого запроса LINQ параллельно

Я все еще очень плохо знаком с LINQ и PLINQ. Я обычно просто использую петли иList.BinarySearch во многих случаях, но я пытаюсь избавиться от этого мышления, где я могу.

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

Используя «обычный» LINQ - извините, я не знаком с терминологией - я могу сделать следующее:

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

Но я бы хотел сделать это параллельно:

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

Когда я проверяю типmatchedStaffэто списокboolс, что не то, что я хочу.

Во-первых, что я здесь делаю не так, а во-вторых, как мне вернутьList<Staff> из этого запроса?

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

возвращаетсяIEnumerable<type>неList<type>.

Ответы на вопрос(2)

Ваш ответ на вопрос