リストを別のリストで並べ替える 質問する

リストを別のリストで並べ替える 質問する

リスト オブジェクトが 2 つあります。1 つは単なる int のリストで、もう 1 つはオブジェクトのリストですが、オブジェクトには ID プロパティがあります。

私がやりたいのは、オブジェクトのリストを、int のリストと同じ並べ替え順序で ID 順に並べ替えることです。

しばらく試してみましたが、今のところうまくいきません。

これまでのところ、これが私の持っているものです...

//**************************
//*** 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;
}   

この機能のポイントは、ユーザーがメンバーを検索すると、最初はランダムな順序で表示され、ページ 2 をクリックすると、その順序のまま次の 20 件の結果が表示されるという点です。

Linq.OrderBy 句のパラメーターとして使用できる ICompare について読んでいますが、簡単な例が見つかりません。

私はエレガントで非常にシンプルな LINQ スタイルのソリューションを期待しています。まあ、いつでも期待できます。

どのような助けでも大歓迎です。

ベストアンサー1

別の LINQ アプローチ:

 var orderedByIDList = from i in ids 
                       join o in objectsWithIDs
                       on i equals o.ID
                       select o;

おすすめ記事