0

我有一个复杂的对象:

+ Client
     + Products
           + Types
               | TypeId
               | ManagerCode
               | TypeName
                ....

单个客户将与他们购买的产品集合相关联,并且每个产品将具有与其关联的类型集合。

我需要对两个属性的“类型”进行排序——ManagerCode 和 TypeName。

例如:client.Products.ForEach(o => o.Types.OrderBy(o1 => o1.BaseType.ManagerCode));

好吧,当我这样做时,一旦返回到前端,列表实际上并没有排序。它保持原来的排序顺序。我究竟做错了什么?

4

2 回答 2

2

OrderBy不替换原始集合;它返回一个新排序的集合。

假设Types是一个列表,你需要

client.Products.ForEach(o =>
    o.Types = o.Types.OrderBy(o1 => o1.BaseType.ManagerCode).ToList());
于 2012-09-26T15:13:15.980 回答
1

另一种解决方案是使用该Sort方法。

client.Products.ForEach(o => o.Types.Sort(
    (x, y) => string.Compare(x.BaseType.ManagerCode, y.BaseType.ManagerCode));
于 2012-09-26T15:18:57.553 回答