gpt4 book ai didi

c# - 合并两个不同类型的列表

转载 作者:行者123 更新时间:2023-11-30 23:28:11 27 4
gpt4 key购买 nike

我从另一个列表向一个列表的对象添加数据:

public void MergeLsts(List<A> lstA, List<B> lstB)
{
foreach (A dataA in lstA)
{
foreach (B dataB in lstB)
{
if (dataA.ItemNo == dataB.ItemNo)
{
//dataA.ItemDescription is up to this point empty!
dataA.ItemDescription = dataB.ItemDescription;
}
}
}
DoSomethingWithTheNewLst(lstA);
}

这工作得很好。然而,这需要很长时间,因为两个列表都变得非常大(lstA 中大约有 70k 项,lstB 中大约有 20k 项)。

我想知道是否有更快或更有效的方法来完成我的需要?也许用 LINQ?

最佳答案

你可以用 O(n) 的复杂度代替 O(N²)Join():

var joinedData =  dataA.Join(dataB, dA => dA.ItemNo, dB => dB.ItemNo, (dA, dB) => new { dA, dB }));
foreach(var pair in joinedData)
{
pair.dA.ItemDescription = pair.dB.ItemDescription;
}

DistinctGroupByJoin 操作使用散列,因此它们应该接近 O(N)而不是 O(N²)

关于c# - 合并两个不同类型的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36128723/

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