Вы можете попытаться найти первое совпадение ParentId
из List2 при итерации List1 и добавить в зависимости от того, был ли он найден:
var UnionList = new List<Item>();
foreach (var item in List1)
{
var match = List2.FirstOrDefault(x => x.ParentId == item.Id);
resultList.Add(match ?? item);
}
Или только с LINQ:
var UnionList = new List<Item>(List1.Select(item => List2.FirstOrDefault(x => x.ParentId == item.Id) ?? item));
Я не знаю о sun.nio.ch., но...
Это - стандартная раздражающая ошибка, которую Вы иногда получаете в веб-приложениях Java. Вы получаете эту ошибку при запросе URL и затем или ударе остановки в браузере или нажатии далеко к другому URL. Приложение жалуется, что не смогло отправить Вам полный ответ.