c# - 使用 orderby 对 int 数组进行排序

标签 c#

我想按升序对我的 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/

相关文章:

c# - System.Void类型如何为不返回值的方法指定返回值类型?

c# - 如何使用任务并行库执行多个任务并在第一个任务实际返回数据后返回

c# - iPad View 不旋转

c# - 如何放大和缩小WP7中的图片?

c# - 在 C# 中捕获 MySQL 触发信号

c# - 无法使用内容同步操作 (syncrepl) 从 OpenLDAP 服务器获取已删除的项目

c# - 没有等待的嵌套异步方法 block

c# - 在构造函数中引用 "this"可以吗?

c# - Linq to Entities删除

c# - EF7 UWP SQLite .Include() 方法