List<int> first = new List<int>()
{
1,2,3,4,5,6,7,8
};
List<int> second = new List<int>()
{
1,2,3,4,
};
List<int> result = first.Where(x => !second.Any(y => y == x)).ToList<int>();
List<int> result2 = first.Except(second).ToList();
This example takes every int ID in list1(first) which is not contained in list2(second).
My second example uses Except method which has very good performance.