更新IList数据

时间:2014-08-19 05:33:31

标签: c# linq ilist

我使用了两个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);

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

如果您想在更新后保留订单,您可以:

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();

答案 2 :(得分:0)

您应该使用ExtList.IndexOf代替ExtList.FirstOrDefault。 然后使用ExtList.Insert代替给定索引ExtList.Add