Ahad Siddiqui - 1 year ago 146

C# Question

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

Recommended for you: Get network issues from **WhatsUp Gold**. **Not end users.**

Answer Source

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();
}
```

Recommended from our users: **Dynamic Network Monitoring from WhatsUp Gold from IPSwitch**. ** Free Download**