我想按升序对我的 int 数组进行排序。
首先我复制了我的数组:
int[] copyArray = myArray.ToArray();
然后我想像这样按升序对它进行排序:
int[] sortedCopy = from element in copyArray
orderby element ascending select element;
但我得到一个错误,“selected”被高亮显示,错误是: “无法将类型‘system.linq.iorderedenumerable’隐式转换为‘int[]’”
最佳答案
您需要在最后调用 ToArray()
才能真正将有序序列转换为数组。 LINQ 使用惰性计算,这意味着直到您调用 ToArray()
、ToList()
或其他一些类似的方法,中间处理(在此案例排序)将不会被执行。
这样做已经创建了元素的副本,因此您实际上不需要先创建自己的副本。
例子:
int[] sortedCopy = (from element in myArray orderby element ascending select element)
.ToArray();
也许最好用表达式语法来写:
int[] sortedCopy = myArray.OrderBy(i => i).ToArray();
关于c# - 使用 orderby 对 int 数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12404735/