并行连接属性上的多个列表
本文关键字:列表 属性 并行连接 | 更新日期: 2023-09-27 18:02:52
我想在并行属性上加入具有相同类型的多个列表。假设我有如下三个列表:
列表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为in的表连接到一个新的列表中,如
新列表
id|Name |Phone|Address
1 |John |1234 |Plant ave
2 |David|5678 |Earth ave
这是我目前得到的,lists.AsParallel().ForEach(JoinLists)
,但我不能再进一步了。
请多多指教。
编辑
这就是我对join list所做的。不是平行的。
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
};
像往常一样,您不应该对结果的排序进行任何假设-但是如果您不关心这个,那么在合适的硬件上应该更快。(当然,总的来说效率会稍微低一些。它仍然需要做同样的工作,并增加了并行化的开销。)