更新illist数据
本文关键字:数据 illist 更新 | 更新日期: 2023-09-27 18:18:40
我使用了两个IList
对象。在第一个列表中,它包含10条记录,第二个列表包含5条记录。现在我想要update the first IList with second IList data
foreach (ObjList newlist in New)
{
ObjList list = ExtList.FirstOrDefault(x => x.Id == newlist.Id);
if (list!= null)
{
ExtList.Remove(list);
ExtList.Add(newlist);
}
}
我试过以上方法。但是被添加的对象附加在列表的末尾。排序顺序改变了。我需要保持现有的顺序。
我尝试了排序,但是没有排序。
ExtList.OrderBy(x => x.Id);
您可以尝试使用IList.Insert()
在待替换项的索引处添加新项,以便您可以保持列表的原始顺序:
ObjList list = ExtList.FirstOrDefault(x => x.Id == newlist.Id);
if (list!= null)
{
var position = ExtList.IndexOf(list);
ExtList.Insert(position, newlist);
ExtList.Remove(list);
}
如果您希望在更新后保持订单,您可以:
ExtList=(from e in ExtList
join n in New
on e.Id equals n.Id into left
from n in left.DefaultIfEmpty()
select new /*Class Name */
{
Id=e.Id,
Name=n==null?e.Name:n.Name
}).ToList();
您应该使用ExtList.IndexOf
而不是ExtList.FirstOrDefault
。然后用ExtList.Insert
代替ExtList.Add