修改列表中的对象

本文关键字:对象 列表 修改 | 更新日期: 2023-09-27 18:21:14

如何修改List中不知道索引是什么的对象?当您知道要更改的索引时,我所发现的关于修改对象的一切都已存在。因此,在下面的代码中,它将用新的ServiceRequest"r"替换索引0处的ServiceRequest(至少我认为它会这样做)。但是,如果您不确定用户将选择更改什么索引,该怎么办?

public class ManagementSystem
{
   List<ServiceRequest> Requests = new List<ServiceRequest>();
   public void CreateRequest(ServiceRequest r)
   {           
       Requests.Add(r);          
   }
    public void DeleteRequest(ServiceRequest r)
    {            
        Requests.Remove(r);
    }
    public void ModifyRequest(ServiceRequest r)
    {            
        Requests[0] = r;
    }                    
}

修改列表中的对象

如果要更新List<T>中的项目,首先必须找到该项目和列表,然后进行替换。

示例:

public void ModifyRequest(ServiceRequest r)
{
    var req = Requests.FirstOrDefault(rs => rs.SomeProperty.Equals(r.SomeProperty));
    if (req != null)
    {
        var idx = Requests.IndexOf(req);
        Requests[idx] = r;
    }
}

在这里,我假设Request类具有属性SomeProperty,基于此,您将在列表中找到匹配的Request对象。

注意

var index = Requests.IndexOf(r);

只有当列表中的项目与r是同一对象时,才会给出非负(有效)索引。他们必须有相同的参考IndexOf()才能工作。

您应该能够使用:

Requests.IndexOf(r) //r being the object you want to modify

要获得要修改的对象的索引,然后从中计算出其余的