using System.Collections.Generic;
public static void Main()
var listAll = new List<List<sig>> { new List<sig>(){new sig{key="501", name = "list1"}},
new List<sig>(){new sig{key="505", name ="list2"}},
new List<sig>(){new sig{key="249", name="list3"}}};
string[] keys = { "505", "501", "249" };
listAll = listAll.OrderBy(e => Array.IndexOf(keys, e.FirstOrDefault()?.key)).ToList();
Console.WriteLine(String.Join(",", listAll.SelectMany(e => e.Select(x => x.name))));
public string key { get; set; }
public string value { get; set; }
public string name { get; set; }