更新列表中的项目<t> c#

时间:2018-03-27 03:58:00

标签: c# list

我有一个类来处理一些数据:

public class User
{
  public string Name;
  public string Date;
}

在另一个课程中,我创建一个List User课程并按如下方式添加数据:

public class Display
{
  List<User> userData = new List<User>;

  private void add()
  {
    User udata = new User;
    udate.Name = "Abc";
    udata.Date = "1/1/18";
    userData.Add(udata);
  }
}

我的问题是,在添加一些数据后,我该如何更新它?假设我添加了udata Name的数据(ABC就是我的意思),我该如何更新?

2 个答案:

答案 0 :(得分:4)

由于您的列表包含可变类型,因此您只需获取对要更新的特定项目的引用。
这可以通过多种方式完成 - 使用它的索引,使用Find方法,或使用linq是我想到的前三个。

使用index

userData[0]?.Name = "CBA";

使用Find

userData.Find(u => u.Name = "Abc")?.Name = "CBA";

使用linq(FirstOrDefault不是唯一的选择):

userData.FirstOrDefault(u => u.Name = "Abc")?.Name = "CBA";

请注意,使用null conditional operator]?.?)可防止在未找到项目时出现空引用异常。

答案 1 :(得分:1)

没有什么棘手的,真的(但确实使用System.Linq) **编辑:如果有两个具有相同名称的用户,则将Single更改为First以避免错误。 **

void Update(string name, string newName)
{
    var user = userData.First(u => u.Name == name);
    user.Name = newName;
}

请注意,这会更改对象,List会维护对已更改对象的引用。