使用“自动映射器”更新项目列表中的一个项目

本文关键字:项目 一个 列表 新项目 映射 更新 自动映射器 使用 | 更新日期: 2023-09-27 18:29:14

我有一个private List<User> _userList = new List<User>();User类中有许多属性,即FirstName, Email, ..等。我只想有选择地更新_userList中的一个项考虑我的类中的以下方法,我在其中传递包含更新值的User对象。

    public void Save(User saveThis)
    {
        var user = _userList.FirstOrDefault(u => u.RowId == saveThis.RowId);
        user = Mapper.DynamicMap<User>(saveThis);
    }

由于User上有许多属性,我正在使用Automapper进行分配。我不需要创建任何映射,因为源和目标是相同的类型。上面的代码也一直工作到调用Automapper的第二行。问题是我不知道如何将这个更新的对象user放回类型_userList 的列表

使用“自动映射器”更新项目列表中的一个项目

您可以获取用户的索引,然后使用(列表的)索引器替换对象,如下所示:

public void Save(User saveThis)
{
    var user_index = _userList
        .Select((item, index) => new {Item = item, Index = index})
        .Where(u => u.Item.RowId == saveThis.RowId)
        .Select(u => (int?)u.Index) //We case to int? to be able to handle the case where the user it not found if we want
        .FirstOrDefault();
    if(user_index == null) //We can handle the case if the user is not found
        return;
    var result = Mapper.DynamicMap<User>(saveThis);
    _userList[user_index.Value] = result;
}
相关文章: