using System.Collections.Generic;
public static void Main()
List<WatchList> original = new List<WatchList>
new WatchList{WatchListId=1, Position=1},
new WatchList{WatchListId=2, Position=2},
new WatchList{WatchListId=3, Position=3},
new WatchList{WatchListId=4, Position=4},
new WatchList{WatchListId=5, Position=5}
List<WatchList> input = new List<WatchList>
new WatchList{WatchListId=1, Position=5},
new WatchList{WatchListId=3, Position=1},
new WatchList{WatchListId=5, Position=4}
List<WatchList> ordered = original.Where(w => !input.Any(iw => iw.WatchListId == w.WatchListId)).OrderBy(w => w.Position).ToList();
foreach (var inputWatchlist in input)
while (indexToInsert < ordered.Count)
if (ordered[indexToInsert].Position <= inputWatchlist.Position)
ordered.Insert(indexToInsert, inputWatchlist);
foreach (var w in ordered)
Console.WriteLine("Id: " + w.WatchListId + " P: " + w.Position);