gpt4 book ai didi

c# - 并行加入多个属性列表

转载 作者:行者123 更新时间:2023-11-30 16:47:47 25 4
gpt4 key购买 nike

我想在属性上并行加入多个具有相同类型的列表。假设我有如下三个列表。

列表 1

 id |Name  |Phone|Address
1 |John |NULL |NULL
2 |David |NULL |NULL

列表 2

 id |Name  |Phone|Address
1 |NULL |1234 |NULL
2 |NULL |5678 |NULL

列表 3

 id|Name|Phone|Address
1 |NULL|NULL |Plant ave
2 |NULL|NULL |Earth ave

我想将 ID 上的三个表加入到一个新列表中,例如,

新列表

 id|Name |Phone|Address
1 |John |1234 |Plant ave
2 |David|5678 |Earth ave

这是我目前所得到的,lists.AsParallel().ForEach(JoinLists) 但我不能更进一步。

如有任何建议,我们将不胜感激。

编辑

这就是我加入列表所做的。不平行。

       var newList = from l1 in list1
join l2 in list2 on l1.Id equals l2.Id
join l3 in list3 on l1.Id equals l3.Id
select new
{
Id= l1.Id,
Name= li.Name,
Phone= l2.Phone,
Address = l3.Address
};

最佳答案

听起来您只想并行化现有的连接。这就像向每个源添加 .AsParallel() 一样简单:

var newList = from l1 in list1.AsParallel()
join l2 in list2.AsParallel() on l1.Id equals l2.Id
join l3 in list3.AsParallel() on l1.Id equals l3.Id
select new
{
Id= l1.Id,
Name= li.Name,
Phone= l2.Phone,
Address = l3.Address
};

像往常一样,您不应该对结果的排序 做任何假设 - 但如果您不关心这个,那么在合适的硬件上这应该会更快。 (当然,它的整体效率会稍微低一些。它仍然需要做同样的工作,但要增加并行化的开销。)

关于c# - 并行加入多个属性列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39002647/

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