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