gpt4 book ai didi

c# - 使用 Linq 根据类型将 List 排序为 List>?

转载 作者:太空宇宙 更新时间:2023-11-03 21:17:19 24 4
gpt4 key购买 nike

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

例如:

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

关于c# - 使用 Linq 根据类型将 List<T> 排序为 List<List<T>>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33128945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com