Compare Two Arrays Of Different Lengths and Show Differences

arrays, c#

Solution

You can use Except and Intersect ...

var Foo_Old = new[] { "test1", "test2", "test3" }; 
var Foo_New = new[] { "test1", "test2", "test4", "test5" };

var diff = Foo_New.Except( Foo_Old );
var inter = Foo_New.Intersect( Foo_Old );
var rem = Foo_Old.Except(Foo_New);

foreach (var s in diff)
{
    Console.WriteLine("Added " + s);
}

foreach (var s in inter)
{
    Console.WriteLine("Same " + s);
}

foreach (var s in rem)
{
    Console.WriteLine("Removed " + s);
}

Problem

Problem: I have two arrays that can possibly be different lengths. I need to iterate through both arrays and find similarities, additions, and deletions. What's the fastest and most efficient way to accomplish this in C#? Edit: The arrays are pre-sorted and they can contain anywhere between 50-100 items. Also, there aren't any constraints on speed and/or memory usage (however, no one likes a memory hog;) For example: ``` String[] Foo_Old = {"test1", "test2", "test3"}; String[] Foo_New = {"test1", "test2", "test4", "test5"}; ``` AND ``` String[] Bar_Old = {"test1", "test2", "test4"}; String[] Bar_New = {"test1", "test3"}; ``` Differences: (with respect to the Foo_New array) ``` [Same] "test1" [Same] "test2" [Removed] "test3" [Added] "test4" [Added] "test5" ``` (with respect to the Bar_New array) ``` [Same] "test1" [Removed] "test2" [Removed] "test4" [Added] "test3" ```

Original source