Tengo 2 objetos de lista, uno es solo una lista de ints, el otro es una lista de objetos pero el objeto tiene una propiedad de ID.Ordenar una lista por otra
Lo que quiero hacer es ordenar la lista de objetos por su ID en el mismo orden de clasificación que la lista de entradas.
he estado jugando desde hace un tiempo tratando de conseguir que funcione, hasta el momento no hay alegría,
Esto es lo que tengo hasta ahora ...
//**************************
//*** Randomize the list ***
//**************************
if (Session["SearchResultsOrder"] != null)
{
// save the session as a int list
List<int> IDList = new List<int>((List<int>)Session["SearchResultsOrder"]);
// the saved list session exists, make sure the list is orded by this
foreach(var i in IDList)
{
SearchData.ReturnedSearchedMembers.OrderBy(x => x.ID == i);
}
}
else
{
// before any sorts randomize the results - this mixes it up a bit as before it would order the results by member registration date
List<Member> RandomList = new List<Member>(SearchData.ReturnedSearchedMembers);
SearchData.ReturnedSearchedMembers = GloballyAvailableMethods.RandomizeGenericList<Member>(RandomList, RandomList.Count).ToList();
// save the order of these results so they can be restored back during postback
List<int> SearchResultsOrder = new List<int>();
SearchData.ReturnedSearchedMembers.ForEach(x => SearchResultsOrder.Add(x.ID));
Session["SearchResultsOrder"] = SearchResultsOrder;
}
El punto de esto es por lo tanto, cuando un usuario busca miembros, inicialmente se muestran en orden aleatorio, luego, si hacen clic en la página 2, permanecen en ese orden y se muestran los siguientes 20 resultados.
He estado leyendo sobre el ICompare que puedo usar como parámetro en la cláusula Linq.OrderBy, pero no puedo encontrar ningún ejemplo simple.
Espero una solución de estilo LINQ elegante y muy simple, así que siempre puedo esperar.
Cualquier ayuda es muy apreciada.
¿Has considerado realizar una unión linq entre las dos listas y luego realizar una clasificación? – RQDQ
Sugerencia: debe guardar el pedido original como diccionario: índice id 2. –
Posible duplicado de http://stackoverflow.com/questions/3470098/linq-list-sort-based-on-another-list – goodeye