假设我有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个属性的对象。
不使用Remove
和Insert
重新组织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";
}
你不必创建一个全新的";人;并将其分配给列表,您也可以修改现有的。。。除非您在";人;类仅在初始化期间设置。。。