2012-07-31 26 views
10
List<int> one //1, 3, 4, 6, 7 
List<int> second //1, 2, 4, 5 

Jak uzyskać wszystkie elementy z jednej listy, które są obecne również na drugiej liście?Porównaj dwie listy, aby wyszukać typowe elementy:

W tym przypadku powinno być: 1, 4

mówię oczywiście o metodzie bez foreach. Zamiast zapytania linq

Odpowiedz

38

Można użyć metody Intersect.

var result = one.Intersect(second); 

przykład:

void Main() 
{ 
    List<int> one = new List<int>() {1, 3, 4, 6, 7}; 
    List<int> second = new List<int>() {1, 2, 4, 5}; 

    foreach(int r in one.Intersect(second)) 
     Console.WriteLine(r); 
} 

wyjściowa:

1
static void Main(string[] args) 
     { 
      List<int> one = new List<int>() { 1, 3, 4, 6, 7 }; 
      List<int> second = new List<int>() { 1, 2, 4, 5 }; 

      var result = one.Intersect(second); 

      if (result.Count() > 0) 
       result.ToList().ForEach(t => Console.WriteLine(t)); 
      else 
       Console.WriteLine("No elements is common!"); 

      Console.ReadLine(); 
     }