在规格不佳的界面中,
int[] userIdList; // ids of all users to display
string[] userNameList; // names of all users to display
限制条件是userIdList [i]始终包含名称为userNameList [i]的用户的ID。
新的要求是按名称对用户进行排序:我将采用这两个列表,按名称进行排序,并返回两个列表,其中上述限制仍然成立。
当然,我可以自己实现排序功能,但是我认为单行linq语句可以做得更好?我起床了
userNameList.Zip(userIdList, (name, id) => new {name, id}).OrderBy(a=>a.name).
但现在我不知道如何重新解压缩列表...
最佳答案
对于输入:
int[] userIdList = new []{ 1,5,3,6 }; // ids of all users to display
string[] userNameList = new []{ "Farix", "Doubles", "Rogue", "Splinter" }; // names of all users to display
您可以这样做:
Array.Sort(userNameList, userIdList);
然后,您将获得与LINQ代码完全相同的结果,但是具有一个更简单的表达式,该表达式不会像LINQ代码中那样分配新的数组,而只是对现有数组中的项进行重新排序,这效率更高。