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
你的代码几乎是正确的-如果你想要一个有序的序列,你可以使用:
IEnumerable<Node> sortedNodes = nodeArray.OrderBy(node => node.getWeight());
不需要接受IComparer<int>
的重载,因为有一种比较int值的明智的默认方式。
或者如果你想创建一个排序数组:
Node[] sortedNodes = nodeArray.OrderBy(x => x.getWeight()).ToArray();
你的例子不会编译,因为没有从IEnumerable<Node>
到Node[]
的隐式转换,所以需要调用ToArray
。