gpt4 book ai didi

c# - 按 list1 对 list2 排序

转载 作者:太空宇宙 更新时间:2023-11-03 21:24:27 25 4
gpt4 key购买 nike

我有 list 1:

"John Doe"
"Jack Smith"
"Peter Miller"

并通过在每个项目上使用一个函数:

List<Person> list2 = new List<Person>();
foreach(string name in list1) list2.Add(GetPersonByName(name));

我制作了列表 2(缩短了,真正的有 30 多个属性):

{Name:"John Doe", Age:55, RoomNo:203}
{Name:"Jack Smith", Age:40, RoomNo:203}
{Name:"Peter Miller", Age:31, RoomNo:202}

到目前为止,还不错。

现在我决定并行执行:

List<Person> list2 = new List<Person>();
Parallel.ForEach(list1, person => { list2.Add(GetPersonByName(name)); });

这可能会导致无序列表2。

如何有效地将 list2 排序为与 list1 相同的顺序?

或者有没有办法告诉并行 foreach 按照输入列表的顺序执行 list2.Add? (GetPersonByName 函数很重 - 但不是计算,主要是等待。)

最佳答案

您应该能够使用 AsParallel() 并行化转换, and use the order preservation technique这样顺序保持不变:

List<Person> list2 = list1.AsParallel().AsOrdered()
.Select(name => GetPersonByName(name))
.ToList();

编辑:添加了 .AsOrdered() 和一个指向 MSDN 文章的链接以回应 CSharpie 的评论。

关于c# - 按 list1 对 list2 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28094916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com