Я хочу сравнить 2 общих c списка одного типа на основе нескольких столбцов / полей, которые будут известны во время выполнения. Необходимо получить строки из второго списка, которых нет в первом списке, сопоставив заданные поля.
Сценарий:
public static void PerformCrudOperation<T>(List<T> sourceList, List<T> newList,
String [] columnNames) where T : class
{
// list from sourceList that are not part of newList, matching criteria columnNames
}
например, у нас есть 2 списка типа «сотрудник» (но может быть любой type, поэтому требуется общее c решение)
class Employee
{
public Int32 EmployeeID { get; set; }
public String LastName { get; set; }
public String FirstName { get; set; }
public String Title { get; set; }
public String City { get; set; }
public String StatusFlag { get; set; }
}
List<Employee> SourceList = new List<Employee>();
List<Employee> NewList = new List<Employee>();
SourceList находится в данных памяти.
NewList - это то, что пользователь предоставит, с некоторыми новыми записями, некоторыми измененными и некоторыми удаляемыми ( для удаления пользователь устанавливает StatusFlag для удаления).
Теперь ключи будут даваться с использованием, например, EmployeeID и LastName (но он также может добавить FirtName).
Цель: -1. Чтобы найти строки, которые необходимо удалить из SourceList \ 2. Чтобы определить новую строку для вставки (строки, которых нет в SourceList, путем сопоставления EmployeeID и LastName в обоих списках) 3. Измененная строка
Для получения дополнительной информации см.