更改列表的状态<;T>;内部扩展方法

本文关键字:gt 内部 方法 扩展 lt 列表 状态 | 更新日期: 2023-09-27 17:57:32

如何在扩展方法中更改作为视图模型一部分的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; }
    }

更改列表的状态<;T>;内部扩展方法

分配参数对传递给方法的表达式没有影响。

相反,您希望对现有实例进行变异。要做到这一点,您需要接受一个可变类型;即CCD_ 1。

List<T>已经有一个RemoveAll()函数可以做到这一点,所以您根本不需要做任何事情。