我有一个string[]其中每个元素都以某个数字结尾的值。string[] partNumbers = new string[] {
"ABC10", "ABC1","ABC2", "ABC11","ABC10", "AB1", "AB2", "Ab11" };我正在尝试使用以下方式对上面的数组进行排序,LINQ但没有得到预期的结果。var result = partNumbers.OrderBy(x => x);实际结果:AB1 Ab11 AB2 ABC1 ABC10 ABC10 ABC11 ABC2预期结果AB1 AB2 AB11 ..
3 回答
一只斗牛犬
TA贡献1784条经验 获得超2个赞
如果要使用LINQ和自定义比较器(如Dave Koelle的自定义比较器)按特定属性对对象列表进行排序,则应执行以下操作:
...items = items.OrderBy(x => x.property, new AlphanumComparator()).ToList();...
您还必须更改Dave的类以从其继承,System.Collections.Generic.IComparer<object>
而不是从其继承,IComparer
因此类签名变为:
...public class AlphanumComparator : System.Collections.Generic.IComparer<object>{ ...
就我个人而言,我更喜欢James McCormack的实现,因为它实现了IDisposable,尽管我的基准测试表明它稍慢一些。
- 3 回答
- 0 关注
- 764 浏览
添加回答
举报
0/150
提交
取消