排序列表< >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吗?
你说的是分组,而不是排序。你可以用Linqs GroupBy
:
var grouped = input.GroupBy(x => x.EnumValue);