using System; using System.Linq; public class Test { public static void Main() { var list1 = new[] { new { ID = 1 }, new { ID = 2 }, new { ID = 3 } }; var list2 = new[] { new { ID = 1, Name = "Jason" }, new { ID = 1, Name = "Jim" }, new { ID = 2, Name = "Mike" }, new { ID = 3, Name = "Phil" } }; var lst = list1 // Select distinct IDs that are in both lists: .Where(lst1 => list2 .Select(lst2 => lst2.ID) .Contains(lst1.ID)) .Distinct() // select items in list 2 matching the IDs above: .Select(lst1 => list2 .Where(lst2 => lst2.ID == lst1.ID) .First()); foreach(var item in lst) { Console.WriteLine("ID: {0}, Name: {1}", item.ID, item.Name); } } }