Имея два списка разных типов, можно ли сделать эти типы конвертируемыми или сопоставимыми друг с другом (например, с помощью TypeConverter или подобного), чтобы запрос LINQ мог сравнивать их? Я видел другие подобные вопросы на SO, но ничего не указывает на то, чтобы сделать типы конвертируемыми между собой для решения проблемы.
Типы коллекций:
public class Data
{
public int ID { get; set; }
}
public class ViewModel
{
private Data _data;
public ViewModel(Data data)
{
_data = data;
}
}
Желаемое использование:
public void DoMerge(ObservableCollection<ViewModel> destination, IEnumerable<Data> data)
{
// 1. Find items in data that don't already exist in destination
var newData = destination.Except(data);
// ...
}
Казалось бы логичным, поскольку я знаю, как сравнивать экземпляр ViewModel с экземпляром Data, я должен иметь возможность предоставить некоторую логику сравнения, которую LINQ затем использовал бы для запросы типа .Except(). Это возможно?