当前位置:  开发笔记 > 编程语言 > 正文

使用OrderBy <>对项目数组进行排序

如何解决《使用OrderBy<>对项目数组进行排序》经验,为你挑选了3个好方法。

我有一系列的项目,我想对他们的一个属性进行排序.我可以使用" item.Fields ["FieldName"]访问items属性.值 "该属性以字符串形式返回,但我可以将其转换为int.

我查看了OrderBy <>但我不知道如何使用它.



1> Jon Skeet..:

为了清楚起见,OrderBy不会对数组进行排序 - 它将返回一个新序列,该序列是数组的排序副本.如果那没关系,那么你需要这样的东西:

var sorted = array.OrderBy(item => item.Fields["FieldName"].Value);

另一方面,我不明白你的注释,该属性作为字符串返回,但你可以将其强制转换为int - 你不能将字符串转换为整数,你必须解析它们.如果这就是你的意思,你可能想要:

var sorted = array.OrderBy(item => int.Parse(item.Fields["FieldName"].Value));

如果你想将它作为一个数组,你可以ToArray()事后调用:

var sorted = array.OrderBy(item => int.Parse(item.Fields["FieldName"].Value))
                  .ToArray();

或者你可以使用,Array.Sort如果你想在原地排序,但这将有点麻烦.



2> Guffa..:

使用Sort方法对数组进行排序:

Array.Sort(theArray, (a, b) => String.Compare(a.Fields["FieldName"].Value, b.Fields["FieldName"].Value));

如果您不使用C#3,则使用委托而不是lambda表达式:

Array.Sort(theArray, delegate(Item a, Item b) { return String.Compare(a.Fields["FieldName"].Value, b.Fields["FieldName"].Value); } );

(这也适用于框架2,OrderBy扩展不支持.)



3> Quintin Robi..:

如果您可以使用orderby它应该很容易,请尝试以下方法.我投入int.Parse虽然取决于你实际想要排序的方式,但这可能不是必需的.

var sorted = array.OrderBy(item => int.Parse(item.Fields["FieldName"].Value));

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有