Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过LINQ对复杂对象进行排序_Linq_Sorting - Fatal编程技术网

通过LINQ对复杂对象进行排序

通过LINQ对复杂对象进行排序,linq,sorting,Linq,Sorting,我有一个复杂的对象: + Client + Products + Types | TypeId | ManagerCode | TypeName .... 单个客户机将与他们购买的产品集合相关联,每个产品都将有一个与其关联的类型集合 我需要在两个属性上对“类型”进行排序——ManagerCode和TypeName 例如:client.Prod

我有一个复杂的对象:

+ 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());

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

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

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

另一种解决方案是使用
排序
方法

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

另一种解决方案是使用
排序
方法

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

我一直在寻找这个-它没有混合LINQ和反LINQ,可能在适当的位置排序或类似的东西-但我找不到。我一直在寻找这个-它没有混合LINQ和反LINQ,可能在适当的位置排序或类似的东西-但我找不到它。