Zoo*_*ing 20 c# arrays sorting
我有一系列的项目,我想对他们的一个属性进行排序.我可以使用" item.Fields ["FieldName"]访问items属性.值 "该属性以字符串形式返回,但我可以将其转换为int.
我查看了OrderBy <>但我不知道如何使用它.
Jon*_*eet 43
为了清楚起见,OrderBy不会对数组进行排序 - 它将返回一个新序列,该序列是数组的排序副本.如果那没关系,那么你需要这样的东西:
var sorted = array.OrderBy(item => item.Fields["FieldName"].Value);
Run Code Online (Sandbox Code Playgroud)
另一方面,我不明白你的注释,该属性作为字符串返回,但你可以将其强制转换为int - 你不能将字符串转换为整数,你必须解析它们.如果这就是你的意思,你可能想要:
var sorted = array.OrderBy(item => int.Parse(item.Fields["FieldName"].Value));
Run Code Online (Sandbox Code Playgroud)
如果你想将它作为一个数组,你可以ToArray()事后调用:
var sorted = array.OrderBy(item => int.Parse(item.Fields["FieldName"].Value))
.ToArray();
Run Code Online (Sandbox Code Playgroud)
或者你可以使用,Array.Sort如果你想在原地排序,但这将有点麻烦.
使用Sort方法对数组进行排序:
Array.Sort(theArray, (a, b) => String.Compare(a.Fields["FieldName"].Value, b.Fields["FieldName"].Value));
Run Code Online (Sandbox Code Playgroud)
如果您不使用C#3,则使用委托而不是lambda表达式:
Array.Sort(theArray, delegate(Item a, Item b) { return String.Compare(a.Fields["FieldName"].Value, b.Fields["FieldName"].Value); } );
Run Code Online (Sandbox Code Playgroud)
(这也适用于框架2,OrderBy扩展不支持.)
如果您可以使用orderby它应该很容易,请尝试以下方法.我投入int.Parse虽然取决于你实际想要排序的方式,但这可能不是必需的.
var sorted = array.OrderBy(item => int.Parse(item.Fields["FieldName"].Value));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
84634 次 |
| 最近记录: |