Compare dos listas para buscar elementos comunes

List one //1, 3, 4, 6, 7 List second //1, 2, 4, 5 

¿Cómo obtener todos los elementos de una lista que están presentes también en la segunda lista?

En este caso debería ser: 1, 4

Hablo por supuesto sobre el método sin foreach. Más bien consultas linq

Puedes usar el método Intersect .

 var result = one.Intersect(second); 

Ejemplo:

 void Main() { List one = new List() {1, 3, 4, 6, 7}; List second = new List() {1, 2, 4, 5}; foreach(int r in one.Intersect(second)) Console.WriteLine(r); } 

Salida:

1
4

 static void Main(string[] args) { List one = new List() { 1, 3, 4, 6, 7 }; List second = new List() { 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(); }