Intersection of two int array in C#

c#

Solution

You can use the built-in Linq `Intersect` extension method for this:

using System.Linq; // Make sure you include this line

public int[] Find_Common_Elements(int[] p1, int[] p2)
{
    return p1.Intersect(p2).ToArray();
}

Problem

I am trying to find the intersection of two int array . I am using this code : ``` public int[] Find_Common_Elements(int[] p1, int[] p2) { int count = 0; for (int i = 0; i < p1.Length; i++) { for (int j = 0; j < p2.Length; j++) { if (p1[i] == p2[j]) { count++; break; } } } int[] result = new int[count]; count = 0; for (int i = 0; i < p1.Length; i++) { for (int j = 0; j < p2.Length; j++) { if (p1[i] == p2[j]) { result[count++] = p1[i]; break; } } } return result; } public int[] BubbleSort(int[] numarray) { int max = numarray.Length; for (int i = 1; i < max; i++) { for (int j = 0; j < max - i; j++) { if (numarray[j] > numarray[j + 1]) { int temp = numarray[j]; numarray[j] = numarray[j + 1]; numarray[j + 1] = temp; } } } return numarray; } public int[] Find_Unique_Elements(int[] numarray) { BubbleSort(numarray); int element = numarray[0]; int count = 1; for (int i = 1; i < numarray.Length; i++) { if (element == numarray[i]) continue; else { element = numarray[i]; count++; } } int[] result = new int[count]; count = 0; element = numarray[0]; result[count++] = element; for (int i = 1; i < numarray.Length; i++) { if (element == numarray[i]) continue; else { element = numarray[i]; result[count++] = element; } } return result; } public void Result() { int[] array1 = new int[] { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 95, 85, 75, 65, 55, 45, 35, 25, 15, 05, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55 }; int[] array2 = new int[] { 15, 25, 35, 45, 55, 12, 22, 32, 43, 52, 15, 25, 35, 45, 55 }; int[] p1 = Find_Unique_Elements(array1); int[] p2 = Find_Unique_Elements(array2); int[] result = Find_Common_Elements(array1, array2); for (int i = 0; i < p1.Length; i++) textBox1.Text += "\n" + p1[i].ToString(); for (int i = 0; i < p2.Length; i++) textBox2.Text += "\n" + p2[i].ToString(); for (int i = 0; i < result.Length; i++) textBox3.Text += "\n"+result[i].ToString(); } private void button1_Click(object sender, RoutedEventArgs e) { Result(); } ``` But the problem is that, the result obtained is 15 15 25 25 35 35 45 45 55 55 , and i want 15 25 35 45 55. what is the problem with this code ? Thanks for any help

Original source