如何将新对象替换为退出的对象列表<>具有相同ID对象



假设我有List<person> personlist有3个项目,如

{ ID=1, name="manish"}, {ID=2, name="jon"}, {Id=3, name="david"}

现在我想替换现有项目:

{ID=2, name="jon"} 

带有新项目

{ID=2, name="Vijay"}

我需要这样做,因为我已经更改了超过50个属性的对象。

不使用RemoveInsert重新组织List。您可以使用FindIndex并使用Indexer有效地更新参考

搜索与指定的谓词,并返回第一个谓词的从零开始的索引发生在整个CCD_ 7内。

var list = new List<Something>()
{
new Something() {Id = 1, Name = "bob"},
new Something() {Id = 2, Name = "tom"},
new Something() {Id = 3, Name = "frank"},
};
var index = list.FindIndex(x => x.Id == 2);
list[index] = new Something() {Id = 2, Name = "doug"};
foreach (var item in list)
Console.WriteLine($"{item.Id} : {item.Name}");

输出

1 : bob
2 : doug
3 : frank

如果你不想完全替换物品,你可以更新属性

var result = list.FirstOrDefault(x => x.Id == 2); 
if(result != null)
result.Name = "SomethingElse";

首先,删除索引处的项然后你需要插入新项目,如果删除的项目是最后一个项目,那么你需要使用Add来插入,如果不是最后一个,那么使用Insert

var list = ...
var item = ...
var index = 1;
list.RemoveAt(index);
if(list.Count == index) {
list.Add(item);
} else {
list.Insert(index , item);
}

您可以在不替换整个项的情况下替换属性。。。

如果你需要先找到索引,然后按你喜欢的方式做,例如:

var index = List.FindIndex(s => s.Id == 2);

你可以做这样的事情:

if (index >= 0) //index found
{
List[index].Name == "New Value";
}

你不必创建一个全新的";人;并将其分配给列表,您也可以修改现有的。。。除非您在";人;类仅在初始化期间设置。。。

相关内容

  • 没有找到相关文章

最新更新