Ich habe 2 Listenobjekte, eines ist nur eine Liste von Ints, das andere ist eine Liste von Objekten, aber die Objekte haben eine ID-Eigenschaft.
Was ich tun möchte, ist die Liste der Objekte nach ihrer ID in der gleichen Sortierreihenfolge wie die Liste der Ints zu sortieren.
Ich habe eine Weile herumgespielt und versucht, es zum Laufen zu bringen, bisher keine Freude,
Hier ist was ich bisher habe ...
//**************************
//*** 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;
}
Der springende Punkt dabei ist, dass ein Benutzer, wenn er nach Mitgliedern sucht, diese zunächst in zufälliger Reihenfolge anzeigt. Wenn er dann auf Seite 2 klickt, bleiben sie in dieser Reihenfolge und die nächsten 20 Ergebnisse werden angezeigt.
Ich habe über den ICompare gelesen, den ich als Parameter in der Linq.OrderBy-Klausel verwenden kann, aber ich kann keine einfachen Beispiele finden.
Ich hoffe auf eine elegante, sehr einfache Lösung im LINQ-Stil, und ich kann immer hoffen.
Jede Hilfe wird am meisten geschätzt.