优化的C#代码.想要使用没有嵌套循环的更好的技术

Bui*_*der 1 c# linq performance loops

我在C#中有一些代码,我在C#中不是很好,所以在循环中使用了循环,但它们花了太长时间.有没有办法为快速执行编写代码以节省准确的时间?

这是代码.

    foreach (var vmain in vendorMainResult)
    {
        foreach (var povendor in potoDateOrders)
        {
            if (vmain.VendorNumber == povendor.VendorNumber && vmain.Year == povendor.Year)
            {
                vmain.ToDateOrders = povendor.ToDateOrders;
                vmain.OutstandingComm = povendor.OutstandingComm;
                break;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

想想每个集合中是否有20,000条记录,那么20k x 20k需要1-2分钟.

Ser*_*rvy 6

使用a有效Join地将两个集合连接在一起.

var query = from vmain in vendorMainResult
    join povender in potoDateOrders
    on new 
    {
        vmain.VendorNumber, 
        vmain.Year,
    }
    equals new 
    {
        povendor.VendorNumber, 
        povendor.Year,
    }
    select new 
    {
        vmain,
        povendor,
    };
Run Code Online (Sandbox Code Playgroud)

  • 虽然这当然是解决问题的正确方法,但我认为最好注意到胜利需要一些成本.原始的循环算法在时间上是n平方的,是的,但它在空间中是恒定的.此算法在时间上要快得多,但是构建连接和分配临时对象会带来更高的负担.以更短的时间交换更多空间通常是一个好主意,在这种情况下这是一个好主意,但我认为我们想要认识到实际上正在进行权衡. (2认同)