c#使用object的int属性对对象列表进行排序

本文关键字:列表 对象 排序 属性 使用 object int | 更新日期: 2023-09-27 17:49:39

我正在尝试按每个对象的权重(int)对对象数组进行排序。我正在使用的代码是:

Node[] sortedNodes = nodeArray.OrderBy(x => x.getWeight());

我也试过这样做:

IEnumerable<Node> sortedNodes = nodeArray.OrderBy
(node => node.getWeight, IComparable<int>);

我想知道是否有人可以帮助我在正确的方向。

编辑:


我得到以下错误:

错误1方法的类型参数"System.Linq.Enumerable.OrderBy (System.Collections.Generic.IEnumerable,System.Func)'不能从用法推断。试一试指定类型参数明确。C:'Users'paul'AppData'Local'TemporaryProjects'ConsoleApplication1'Program.cs 26 34 HuffmanCode

c#使用object的int属性对对象列表进行排序

你的代码几乎是正确的-如果你想要一个有序的序列,你可以使用:

IEnumerable<Node> sortedNodes = nodeArray.OrderBy(node => node.getWeight());

不需要接受IComparer<int>的重载,因为有一种比较int值的明智的默认方式。

或者如果你想创建一个排序数组:

Node[] sortedNodes = nodeArray.OrderBy(x => x.getWeight()).ToArray();

你的例子不会编译,因为没有从IEnumerable<Node>Node[]的隐式转换,所以需要调用ToArray