更新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);

更新illist数据

您可以尝试使用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