PLINQ 是否保留序列中的原始顺序?

发布于 2024-10-10 22:34:44 字数 262 浏览 4 评论 0原文

即使结果是并行产生的,PLINQ 是否保证按照原始序列的操作顺序返回查询结果?例如:

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

结果总是“aa, ba, ca, da,”吗?

Is PLINQ guaranteed to return query results in the order of the original sequence being operated on, even if results are produced in parallel? For instance:

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

will the result always be "aa, ba, ca, da, "?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

英雄似剑 2024-10-17 22:34:44

您必须使用 AsOrdered() 来保留顺序:

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

另请查看:如何:控制 PLINQ 查询中的排序

You have to use AsOrdered()to preserve the order:

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

Also check out this: How to: Control Ordering in a PLINQ Query

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文