Ho 2 elenchi di oggetti, uno è solo un elenco di ints, l'altro è un elenco di oggetti ma gli oggetti hanno una proprietà ID.Ordinare una lista con un'altra
Quello che voglio fare è ordinare l'elenco degli oggetti tramite il suo ID nello stesso ordine della lista di interi.
Ive suonato in giro per un po 'di tempo cercando di farlo funzionare, finora nessuna gioia,
Ecco quello che ho finora ...
//**************************
//*** 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;
}
Il punto di questo è quindi, quando un utente cerca i membri, inizialmente vengono visualizzati in ordine casuale, quindi se fanno clic sulla pagina 2, rimangono in tale ordine e vengono visualizzati i 20 risultati successivi.
Ho letto dell'ICompare che posso utilizzare come parametro nella clausola Linq.OrderBy, ma non riesco a trovare esempi semplici.
Spero in una soluzione di stile LINQ elegante e molto semplice, posso sempre sperare.
Qualsiasi aiuto è più apprezzato.
Hai preso in considerazione l'idea di eseguire un collegamento linq tra i due elenchi eseguendo un ordinamento? – RQDQ
Suggerimento: è necessario salvare l'ordine originale come dizionario: id 2 indice. –
Possibile duplicato di http://stackoverflow.com/questions/3470098/linq-list-sort-based-on-another-list – goodeye