我有两个列表对象,一个只是一个整数列表,另一个是一个对象列表,但对象有一个 ID 属性。
我想要做的是按照 ID 对对象列表进行排序,排序顺序与 int 列表相同。
我已经玩了一段时间了现在试图让它工作,到目前为止没有乐趣,
这是我目前掌握的情况。
//**************************
//*** 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个结果。
我一直在阅读有关 ICompare 的文章,我可以用它作为 Linq 中的一个参数。OrderBy 子句,但我找不到任何简单的例子。
我希望一个优雅的,非常简单的 LINQ 风格的解决方案,我总是希望。
非常感谢你的帮助。