PLINQ сохраняет исходный порядок в последовательности? - PullRequest
5 голосов
/ 07 января 2011

Гарантируется ли PLINQ возвращать результаты запроса в порядке исходной последовательности, даже если результаты выдаются параллельно?Например:

new List<String>(){"a", "b", "c", "d"}.asParallel().Select(str => str + "a").asSequential().ToList().ForEach(str => Console.Write(str + ", ");

будет всегда результат "аа, ба, ча, да"?

1 Ответ

8 голосов
/ 07 января 2011

Вы должны использовать AsOrdered() для сохранения заказа:

        new List<String>(){"a", "b", "c", "d"}
            .AsParallel()
            .AsOrdered()
            .Select(str => str + "a")
            .AsSequential()
            .ToList()
            .ForEach(str => Console.Write(str + ", "));

Также проверьте это: Как: контролировать порядок в запросе PLINQ

...