обновить список с помощью определенного объекта

#c# #asp.net #.net

#c# #asp.net #.net

Вопрос:

я использую следующий код для получения данных из списка объектов

 Con preConObj = preConfigList.FirstOrDefault(i => i.ID == con.ID);
  

Теперь я хочу обновить этот объект в предварительном списке настроек, который является типом

  private static List<Con> preConList;
  

с помощью этого объекта

 Con PostConObj 
  

Каков наилучший способ сделать это?

Я пробовал с

preConObj = postConObj но это не обновляет список…

Ответ №1:

Сначала вы должны найти индекс объекта, используя:

 var idx = preConList.FindIndex(x => x.ID == preConObj.ID);
preConList[idx] = postConObj; // replace it
  

Ответ №2:

Отражение может быть полезным в этом случае:

 public static void UpdateObject<T>(this T source, T target)
{
    var type = typeof(T);

    var properties = type.GetProperties();

    foreach(var prop in properties)
        prop.SetValue(source, prop.GetValue(target));
}

// Usage:
preConObj.UpdateObject(postConObj);
  

Комментарии:

1. Кажется, я неправильно понял вопрос, вам не кажется?

2. @AmitJoki нет, на самом деле ваш способ тоже должен работать, и он более простой. но это также работает с другими коллекциями, поскольку не во всех коллекциях есть метод findIndex

3. спасибо за это разъяснение… Я думал, что предоставил неправильное решение, когда вы использовали отражение..