繁体   English   中英

通过LINQ订购复杂对象

[英]Order complex object via LINQ

我有一个复杂的对象:

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

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

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

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

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

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

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

client.Products.ForEach(o =>
    o.Types = o.Types.OrderBy(o1 => o1.BaseType.ManagerCode).ToList());

一种替代解决方案是使用Sort方法。

client.Products.ForEach(o => o.Types.Sort(
    (x, y) => string.Compare(x.BaseType.ManagerCode, y.BaseType.ManagerCode));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM