如何修改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;
}
}
答案 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
获取要修改的对象的索引,然后从那里计算出其余的