我有一系列的项目,我想对他们的一个属性进行排序.我可以使用" item.Fields ["FieldName"]访问items属性.值 "该属性以字符串形式返回,但我可以将其转换为int.
我查看了OrderBy <>但我不知道如何使用它.
为了清楚起见,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
如果你想在原地排序,但这将有点麻烦.
使用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扩展不支持.)
如果您可以使用orderby它应该很容易,请尝试以下方法.我投入int.Parse虽然取决于你实际想要排序的方式,但这可能不是必需的.
var sorted = array.OrderBy(item => int.Parse(item.Fields["FieldName"].Value));