排序列表< >List< List< T>祝辞基于类型使用Linq

本文关键字:List 类型 于类型 Linq 列表 gt 排序 | 更新日期: 2023-09-27 18:17:45

我想"排序"(不确定这是否是正确的术语)基于对象内的枚举值的List,其中返回的List包含多个List s,每个包含具有相同枚举值的对象。

,

class Obj {
    public MyEnum EnumVal { get; set; }
}
enum MyEnum {
    Val1, Val2, Val3
}
// Input
new List<Obj> {
    new Obj { EnumVal = MyEnum.Val1 },
    new Obj { EnumVal = MyEnum.Val1 },
    new Obj { EnumVal = MyEnum.Val2 },
    new Obj { EnumVal = MyEnum.Val3 },
    new Obj { EnumVal = MyEnum.Val1 },
    new Obj { EnumVal = MyEnum.Val3 },
    new Obj { EnumVal = MyEnum.Val2 },
    new Obj { EnumVal = MyEnum.Val3 }
}
// Output
new List<List<Obj>> {
    new List<Obj>{
        new Obj { EnumVal = MyEnum.Val1 },
        new Obj { EnumVal = MyEnum.Val1 },
        new Obj { EnumVal = MyEnum.Val1 }
    },
    new List<Obj>{
        new Obj { EnumVal = MyEnum.Val2 },
        new Obj { EnumVal = MyEnum.Val2 }
    },
    new List<Obj>{
        new Obj { EnumVal = MyEnum.Val3 },
        new Obj { EnumVal = MyEnum.Val3 },
        new Obj { EnumVal = MyEnum.Val3 }
    }
};

我知道如何写一个函数这样做,但是有一种方法使用Linq吗?

排序列表< >List< List< T>祝辞基于类型使用Linq

你说的是分组,而不是排序。你可以用Linqs GroupBy:

var grouped = input.GroupBy(x => x.EnumValue);