В ответ на следующий вопрос: Как преобразовать MatchCollection в строковый массив
Учитывая два выражения Linq:
var arr = Regex.Matches(strText, @"\b[A-Za-z-']+\b")
    .OfType<Match>() //OfType
    .Select(m => m.Groups[0].Value)
    .ToArray();
и
var arr = Regex.Matches(strText, @"\b[A-Za-z-']+\b")
    .Cast<Match>() //Cast
    .Select(m => m.Groups[0].Value)
    .ToArray();
OfType < > был оценен пользователем Alex немного быстрее (и подтвержден мной).
Это кажется мне неинтересным, поскольку я бы подумал, что OfType < > должен был бы выполнить сравнение "is" и листинг (T).
Любое просветление будет оценено по поводу того, почему это так:)
