1

如何使用元素键对对象数组中的数组进行排序?

请看图片了解更多信息: 对象数组中的数组

所以例如在图片中你可以看到我们现在有 8 个对象,所以我们想用新数组中的键对 8 个对象进行排序,例如用数组中的“ parentId ”键或数组中的“ categoryName ”键对 8 个对象进行排序!!!

但我认为我们遇到了问题,因为我们无法访问新数组中的密钥!!!

所以我认为这段代码对我没有帮助:

 Array.Sort....

现在如何使用这样的数组键对对象进行排序?

亲切的问候

4

3 回答 3

2

如果你使用Lists你可以这样排序:

List<objectName> yourList = yourArray.TypeOf<objectName>().ToList();
yourList.Sort((x,y) => x.yourKey.CompareTo(y.yourKey));
于 2013-04-29T07:18:20.120 回答
2

您的问题并不明显,但是您要排序的数组似乎包含通过具有相同键集来表示对象实例的字典。要访问值,您需要将数组元素转换为正确的字典类型(我假设它是Dictionary<String, String>)。然后,您可以使用 LINQ 通过使用OrderBy子句进行排序:

var sortedByCategoryName = result
  .Cast<IDictionary<String, String>>()
  .OrderBy(d => d["categoryName"]);

排序将基于字符串排序,因为值是字符串。但是,如果您想按say parentId(这是一个数字)进行排序,您首先需要执行转换:

var sortedByParentId = result
  .Cast<IDictionary<String, String>>()
  .OrderBy(d => Int32.Parse(d["parentId"]));

请注意,如果字典中缺少某个键,或者在第二个示例中,如果无法将值解析为整数,则上述代码将引发异常。

于 2013-04-29T07:44:30.497 回答
1

如果您使用 linq,您可以进行多级排序

using System.Linq;

Array result = new Array(from item in your array order by item.parentId, item.categoryName select item);  
于 2013-04-29T07:25:48.950 回答