List<MyClass> originalCollection = new List<MyClass>();
List<MyClass> newStuff = new List<MyClass>();
foreach (var item in newStuff)
{
int index = originalCollection.FindIndex(x => x.Name == item.Name && x.Description == item.Description);
if (index < 0)
continue;
originalCollection[index] = item;
}
Если вы действительно хотите 1-лайнер ...
List<MyClass> originalCollection = new List<MyClass>();
List<MyClass> newStuff = new List<MyClass>();
originalCollection = newStuff.Concat(originalCollection.Where(x => !newStuff.Any(y => y.Description == x.Description && y.Name == x.Name)).ToArray()).ToList();