列表在插入后更新值

时间:2012-11-28 11:50:35

标签: c# linq

我有一个问题,我想将一个值更新为要添加到列表中的元素。

使用通用示例: -

我有一个模型对象: -

public class Model
{
    public int ModelProperty1 { get; set; }

    public int ModelProperty2 { get; set; }

    public int ModelPropertyStatus { get; set; }
}

我有一个DTO对象: -

 public class DTO
{
    public int DTOProperty1 { get; set; }

    public int DTOProperty2 { get; set; }

    public int DTOPropertyStatus { get; set; }
}

现在,在我的Controller中,我有一个List,它添加了Model对象: -

List<Model> _listOfModel = new List<Model>();

其次,我创建了一个映射方法来映射我的Model&amp; DTO

 private Model MapDTOToModel(DTO dto)
    {
        return new Model
        {
            ModelProperty1 = dto.DTOProperty1,
            ModelProperty2 = dto.DTOProperty2
        };
    }

来到我的问题: - 我想要这样的东西工作: - //我想要一段代码,在插入// List

之后更新我的ModelPropertyStatus
    _listOfModel.Add(new Model() { ModelPropertyStatus = 1 });

//这是我要转换的代码片段: -

            Model model = new Model();
        model.ModelPropertyStatus = 1;
        _listOfModel.Add(MapDTOToModel(model));

具体(更新) 我想要这样的东西: -

_listOfModel.Add(MapDTOToModel() { ModelPropertyStatus = 1 });

任何建议?

1 个答案:

答案 0 :(得分:1)

您正在寻找ObservableCollection

  

表示动态数据集合,在添加,删除项目或刷新整个列表时提供通知。


以下是一个例子:

public class Model
{
    public int ModelProperty1 { get; set; }
    public int ModelProperty2 { get; set; }
    public int ModelPropertyStatus { get; set; }
}

void Main()
{
    ObservableCollection<Model> _listOfModel = new ObservableCollection<Model>();
    _listOfModel.CollectionChanged += (s, o) =>
    {
        foreach (var m in o.NewItems)
            ((Model)m).ModelPropertyStatus = 1;
    };

    var model = new Model();

    Console.WriteLine("Before add: " + model.ModelPropertyStatus.ToString());

    _listOfModel.Add(model);

    Console.WriteLine("After add: " + model.ModelPropertyStatus.ToString());
}

输出:

  

添加前:0
  添加后:1


如您所见,使用CollectionChanged事件,属性在插入期间获得更新。

相关问题