File: DataFrame.Join.Extrensions.cs
Web Access
Project: src\src\Microsoft.Data.Analysis\Microsoft.Data.Analysis.csproj (Microsoft.Data.Analysis)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
using System.Collections.Generic;
using System.Collections.ObjectModel;
 
namespace Microsoft.Data.Analysis
{
    public static class DataFrameJoinExtensions
    {
        public static IList<long> GetSortedListsIntersection(IReadOnlyList<long> sortedList1, IReadOnlyList<long> sortedList2)
        {
            var crossing = new Collection<long>();
 
            var i = 0;
            var j = 0;
 
            while (i < sortedList1.Count && j < sortedList2.Count)
            {
                var item1 = sortedList1[i];
 
                while (j < sortedList2.Count)
                {
                    var item2 = sortedList2[j];
 
                    if (item1 < item2)
                    {
                        i++;
                        break;
                    }
                    else if (item1 == item2)
                    {
                        crossing.Add(item1);
                        i++;
                        j++;
                        break;
                    }
                    else
                    {
                        j++;
                    }
                }
            }
 
            return crossing;
        }
    }
}