Это зависит от проблемы, которую вы решаете. Если файл XML довольно большой, иногда необходимо использовать что-то вроде парсеров SAX для обхода файлового узла за узлом, или вы получите исключение OutOfMemoryException или исчерпаете даже виртуальную память на вашем компьютере.
Но, если ожидаемый размер XML-файла относительно невелик, вы можете просто использовать что-то вроде Linq, также посмотрите мой ответ - здесь я попытался объяснить, как сделать обход узлов намного проще с конструкции типа доходность возврата .