Изменить состояние List<T> внутри метода расширения

Как изменить состояние List, являющегося частью модели представления в методе расширения, чтобы модель представления отражала это изменение без необходимости повторного присвоения значения

Код:

//ViewModel:

//This line should modify the change internally wihtout having to reassign like

// ..Selected =model.CheckBoxList.Selected.RemoveWhere(c => c.SelectedValue == null)

  model.CheckBoxList.Selected.RemoveWhere(c => c.SelectedValue == null) 

Метод продления:

 public static IEnumerable<T> RemoveWhere<T>(this IEnumerable<T> source, Predicate<T> predicate)

{

            var x = source.ToList();
            x.RemoveAt(1);
            source = x;
            return source;

}

Обновить:

public class CheckBoxList
    {
        public CheckBoxList()
        {
            //Selected = new List<CheckBoxListViewModel>();
        }

        [XmlElement("SelectedItem")]
        public List<CheckBoxListViewModel> Selected { get; set; }
    }

    [XmlRoot(ElementName = "MyClass")]
    public class CheckBoxListViewModel
    {
        public string SelectedValue { get; set; }
        public string SelectedDescription { get; set; }
    }

1 ответ

Решение

Назначение параметра не влияет на выражение, которое вы передаете методу.

Вместо этого вы хотите изменить существующий экземпляр. Для этого вам нужно принять изменяемый тип; а именно, List<T>,

List<T> уже есть RemoveAll() функция, которая делает именно это, так что вам не нужно ничего делать вообще.

Другие вопросы по тегам