修改列表

时间:2015-11-10 02:36:49

标签: c# list

如何修改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;

    }                    

}

2 个答案:

答案 0 :(得分:1)

如果要更新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()才能工作。

答案 1 :(得分:0)

你应该可以使用:

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

获取要修改的对象的索引,然后从那里计算出其余的