23

For example, I have two arrays:

var list1 = string[] {"1", "2", "3", "4", "5", "6"};
var list2 = string[] {"2", "3", "4"};

What I'm trying to do is -

  1. Get common items from list1 and list2 (eg. {"2", "3", "4"})
  2. Get different items list1 and list2 (eg. {"1", "5", "6"})

So I've tried with LINQ and -

var listDiff = list1.Except(list2); //This gets the desire result for different items

But,

var listCommon = list1.Intersect(list2); //This doesn't give me desire result. Comes out as {"1", "5", "6", "2", "3", "4"};

Any ideas?

Ye Myat Aung
  • 1,783
  • 11
  • 31
  • 49

1 Answers1

31

Somehow you have got that result from somewhere else. (Perhaps you are writing out the contents of listDIff first, and thought that it was from listCommon.) The Intersect method does give you the items that exists in both lists:

var list1 = new string[] {"1", "2", "3", "4", "5", "6"};
var list2 = new string[] {"2", "3", "4"};
var listCommon = list1.Intersect(list2);
foreach (string s in listCommon) Console.WriteLine(s);

Output:

2
3
4
Guffa
  • 687,336
  • 108
  • 737
  • 1,005