using System.Collections.Generic;
public static void Main()
var lst1 = new List<Item> {
new Item{Id=1,Name="Item 1", Description="Item 1 Description"},
new Item{Id=2,Name="Item 2", Description="Item 2 Description"},
new Item{Id=3,Name="Item 3", Description="Item 3 Description"},
new Item{Id=4,Name="Item 4", Description="Item 4 Description"},
new Item{Id=5,Name="Item 5", Description="Item 5 Description"}
var lst2 = new List<Item> {
new Item{Id=1,Name="Item 1"},
new Item{Id=2,Name="Item 2"}
lst1.RemoveAll(x => lst2.Any(y => y.Id == x.Id && y.Name==x.Name));
Console.WriteLine(string.Format("Item count in lst1 after removing lst2 items is {0}",lst1.Count));
public string Name {get;set;}
public string Description {get;set;}